python新式类和经典类的区别

父类或者以上有继承的object就是新式类 没有的则是经典类
1,新式类和经典类的区别:
广度优先和深度优先,这主要是在多类继承的时候会使用到,如下多类继承的D类对比:
“新式类”和“经典类”的区分在Python 3之后就已经不存在,在Python 3.x之后的版本,因为所有的类都派生自内置类型object(即使没有显示的继承object类型),即所有的类都是“新式类”。
经典类在加载的时候采用的是深度优先算法,二新式类采用的是广度优先算法:比如
经典类: 搜索顺序是(D,B,A,C)

>>>class A: attr = 1
...
>>> class B(A): pass
...
>>> class C(A): attr = 2
...
>>> class D(B,C): pass
...
>>> x = D()
>>> x.attr
1

新式类继承搜索程序是宽度优先
新式类:搜索顺序是(D,B,C,A)

>>> class A(object): attr = 1
...
>>> class B(A): pass
...
>>> class C(A): attr = 2
...
>>> class D(B,C): pass
...
>>> x = D()
>>> x.attr
2

原文链接