python的类可以继承多个类,如果继承多个类,那么其寻找方法的方式有:深度优先和广度优先
基类或者父类继承了object类,那么该类就是新式类,否则便是经典类
当类是经典类时,多继承情况下,会按照深度优先方法查找
当类时新式类时,多继承情况下,会按照广度优先方法查找
class A(object):
def test(self):
print('from A')
class B(A):
def test(self):
print('from B')
class C(A):
def test(self):
print('from C')
class D(B):
def test(self):
print('from D')
class E(C):
def test(self):
print('from E')
class F(D,E):
# def test(self):
# print('from F')
pass
f1=F()
f1.test()
print(F.__mro__) #只有新式才有这个属性可以查看线性列表,经典类没有这个属性
类的继承关系:
运行结果:
新式类继承顺序:F->D->B->E->C->A
经典类继承顺序:F->D->B->A->E->C
python3中统一都是新式类 pyhon2中才分新式类与经典类 所有的父类的MRO列表遵循如下原则: 子类会先于父类被检查;多个父类会根据它们在列表中的顺序被检查;如果对下一个类存在两个合法的选择,则选择第一个类。