python使用2:新式类和经典类
作者:互联网
python3中默认使用新式类,或者说pyhon3只存在新式类,不存在经典类
新式类和经典类的区别:
1.多继承时,寻找某个属性的顺序有区别,新式类使用c3算法寻找类中对象,经典类使用深度优先算法寻找.
在多继承的情况下,某些类中有同名对象时,这种顺序,可能导致一种新的产生bug的方式.
但是为什么不设置一些独特的变量名称来避免混淆呢?在故意重写对象时,应该使继承的类"关系分明"比如
class A(): i=7 j=5 class B(A): i=3 class C(B): q=1
此时C-B-A,而不应该
class A(): i=7 j=5 class B(A): i=3 class C(B,A): q=1
此时关系就乱了
2.类的类型和类的基类和类的父类和实例的类型和实例的父类均不同
只看新式类:
class Tty(): pass if __name__ == '__main__': t = Tty() print(type(Tty)) print(Tty.__class__) print(Tty.__base__) print(type(t)) print(t.__class__)
这里也印证了一种说法,python3中类就是类型,类型就是类
对于新式类的这种特点,我并没有想出什么有用的东西
标签:__,Tty,.__,python,新式,经典,print,class 来源: https://www.cnblogs.com/lqs244/p/14359131.html