类的继承顺序:
a.经典类中继承顺序按照深度优先;
b.新式类中继承顺序按照广度优先;
新式类中有个mro属性可以显示查找顺序开头的几个类方法:
__init() 构造函数 简单的调用方法: obj = className(args)
new()
call() 表示可调用的实例
del(self) 析构方法, 删除一个对象 简单的调用方法 : del obj ;
repr(self) 转化为供解释器读取的形式 简单的调用方法 : repr(obj);
str(self) 用于将值转化为适于人阅读的形式 简单的调用方法 : str(obj);
cmp(self,x) 对象比较 简单的调用方法 : cmp(obj, x);
开头的类属性:
__dict: 类的属性(包含一个字典,由类的数据属性组成);
slots: 用于限制类的属性,定义slots以后就不会出现dict了
bases : 类的所有父类构成元素(包含了一个由所有父类组成的元组);
doc :类的文档字符串
name: 类名
所以,init 和 new 最主要的区别在于:
- init 通常用于初始化一个新实例,控制这个初始化的过程,比如添加一些属性, 做一些额外的操作,发生在类实例被创建完以后。它是实例级别的方法。
- new 通常用于控制生成一个新实例的过程。它是类级别的方法。