python--面向对象

经典类:py2.x未自动继承object,需要手动写     继承流程:一条道走到黑(深度优先)

新式类:py3.x自动继承object,不需要手动写    继承流程:顶部最后(广度优先)

面向对象:

  封装、继承、多态(python自带,不支持重载,支持重写,没有接口)

特殊类属性:

  C.__name__  类C的名字(字符串)

  C.__doc__ 类C的文档字符串

  C.__bases__ 类C的所有父类构成的元组

  C.__dict__ 类C的属性

  C.__module__  类C定义所在的模块(1.5 版本新增)

  C.__class__ 实例C对应的类(仅新式类中)

 

  __init__(self):构造方法,构造器方法

  __del__(self):析构方法,解构器方法

       __call__(): 对象()

         obj = cls(),obj ()

       __iter__():

     迭代,如果执行for对象时,自动会执行对象的iter()方法,生成器

实例属性:

  能够在“运行时”创建实例属性,是 Python 类的优秀特性之一,从 C++或 Java 转过来的人会被小小的震惊一下,因为 C++或 Java 中所有属性在使用前都必须明确定义/声明。

Python 不仅是动态类型,而且在运行时,允许这些对象属性的动态创建。创建这样的属性时,必须谨慎。

一个缺陷是,属性在条件语句中创建,如果该条件语句块并未被执行,属性也就不存在,而在后面的代码中试着去访问这些属性,就会有错误发生。

查看实例的属性:dir(obj)

       @staticmethod():

    静态方法,将方法装饰成静态方法

  @ classmethod():

    类方法,内建方法,将方法装饰成类方法(静态方法的特殊)

  @property:

    将方法伪造成字段

 

静态字段:

  在类里面写,而不是在__init__()方法里面写

执行父类构造方法:

         super(当前类,self).init()    # 推荐

         父类.init(self,xxx)         # 不推荐

 

查找源代码过程:

         self.xxx()   # 从底层开始找

 

posted on 2018-01-23 11:10  jovelove  阅读(77)  评论(0)    收藏  举报