编程范式:编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程,实现一个任务的方式有很多种不同的方式,对这些不同的编程方式的特点进行归纳总结得出的编程方式类别,即为编程范式。
面向过程:面向过程被称为top-down languages,就是程序从上到下一步步执行,从头到尾的解决问题,设计思路是程序一开始就着手解决一个大的问题,然后再把一个大问题分解成很多小问题或子过程,这些子过程在执行的过程继续分解知道能过在一个小步骤范围内解决。
面向对象:Object Oriented Programming,简称OOP编程,是利用“类”和“对象”来创建各种模型来实现对功能的描述,使用面向对象原因一方面是因为他可以使程序的维护和扩展变得更加简单,并且可以大大提高程序的开发效率,另外,基于面向对象的程序可以使他人更加容易的理解你的代码逻辑,从而使团队开发更加简单。
写代码原则:
1、不能写重复代码
2、代码需要经常变更(可读性好,易扩展)
面向对象:
继承:使用现有的类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
封装:也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或对象操作,对不可信的进行屏蔽。
多态:允许子类类型的指针赋值给父类类型的指针(多态的目的是接口重用)
高阶面向对象:(参考 )
1、经典类和新式类:
经典类:深度优先
新式类:广度优先
2、静态方法:
通过@staticmethod装饰器,将被装饰的类的一个方法变成一个静态方法,相当于跟类本身已经没什么关系了,不可以访问实例变量或类变量,他和类唯一的关联就是需要通过类名来调用。
3、类方法:
通过@classmethod装饰器实现,类方法只能访问类变量,不能访问实例变量(__init__)。
4、属性方法:
通过@property装饰器实现,把一个类方法变成一个静态的方法,之后调用就不需要加()了,变成属性方法后不能修改,还可以通过@(上面装饰的类方法).setter装饰器实现可以修改属性方法,删除的话需要@(上面装饰的类方法).deleter装饰器来实现。
5、类的特殊成员方法:
__doc__ :表示类的描述信息(print class.__doc__)
__module__:表示当前操作对象在哪个模块里 (返回lib)
__class__:表示当前操作对象的类是什么 (返回lib.type)
注:(from lib import type)其中lib就是模块,type就是类
__init__:构造方法,类创建对象的时候,自动执行
__del__:析构方法,对象在内存中释放时,自动执行
__call__:运行class()(),来执行__call__定义的方法
__dict__:查看类或对象中的所有成员 (print class.__dict__)
__str__:打印对象时,默认输出该方法的返回值(obj=class() ; print(obj))
__getitem__:获取字典内容
__setitem__:设置字典内容
__delitem__:删除字典内容
class Foo(object):
def __setitem__(self,key):
pass....
...
obj = class()
obj['k1'] = 'caicai' 设置字典内容
get = obj['k1'] 获取k1的内容
del obj['k1'] 删除k1内容
__new__:使用类生成实例的时候,最先调用的是__new__
__metaclass__:查看这个类是由什么类产生的(类默认是由type类实例化产生的,type是定义在python解释器中的)
6、反射:
hasattr(object,name,default=None) #判断object对象中是否有name这个方法或属性
getattr(object,name) #获取object.name
setattr(object,name,z) #给objeck对象加一个name方法或属性,object.name的运行结果是z,相当于object.name=z
delattr(object,name) #删除object对象的name方法或属性
7、异常处理:(参考http://www.cnblogs.com/wupeiqi/articles/5017742.html)
try:
class.def()
except indexError,e: #只包括indexError错误
print('出现indexError错误’)
except Exception,e: #出现任何异常都包括在Expection里 print('出现异常错误,错误如下')
print(e)
常见的错误类型与继承关系: