python经典类和新式类的区别

经典类和新式类的区别
1.经典类是默认没有继承基类的,而新式类默认就继承object
2.经典类在多重继承的时候是采用从左到右深度优先原则匹配的,而新式类是采用cs算法广度优先进行匹配的

3经典类没有__mro__和instance.mro()方法,而新式类是有的

为什么要从经典类更换到新式类?
因为在经典类中的多重继承会有些问题,可能导致在继承树种的方法查询绕过后面的父类
一个mro列表就是合并所有父类的mro列表,并且遵循以下三条原则:
1.子类永远在父类前面
2.如果有多个父类,会根据他们在列表中的顺序依次排列
3.如果对下一个类存在两个合法的选择,选择第一个父类
使用mro算法最佳实现:
避免多重继承,
super使用一致
不要混用经典类和新式类
调用父类的时候注意检查类层次

猜你喜欢

转载自blog.csdn.net/ahua_c/article/details/80054718