继承多个父类时,子类中使用哪个父类的属性,跟class语句中这些父类的顺序有关系,以前面的父类的属性为准 ,在python中使用MRO(方法解析顺序)这种算法来查找多重继承下使用哪个父类的属性
class B:
num = 78
class C:
num = 70
class A(B, C):
pass
print(A.__mro__)
print(A().num)
打印结果:
(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>, <class 'object'>)
78
B类在C类前面,所以A继承的num属性是 num = 78
再看一个:
class F:
pass
class D(F):
name = 'aa'
class E(F):
name = 'ww'
class B(D):
num = 78
class C(E):
num = 70
class A(B, C):
pass
print(A.__mro__)
print(A().name)
打印结果:
(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.D'>, <class '__main__.C'>, <class '__main__.E'>, <class '__main__.F'>, <class 'object'>)
aa