python 类继承属性查找方法
python2.3以后新式类继承属性查询算法为C3
class D(): pass class B(D): pass class C(D): pass class A(B,C): pass print(A.__mro__)##(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.D'>, <class 'object'>) A->B->C->D
class D(): pass class E(): pass class B(D): pass class C(E): pass class A(B,C): pass print(A.__mro__)##(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.D'>, <class '__main__.C'>, <class '__main__.E'>, <class 'object'>) A->B->D->C->E
class A(): def __init__(self): print("A") class B(A): def __init__(self): print("B") super().__init__() class C(A): def __init__(self): print("C") super().__init__() class D(B,C): def __init__(self): print("D") super(D,self).__init__() if __name__=='__main__': d=D() print(D.__mro__) ##结果 super不一定是调用父类方法 也是按__mro__调用上个类的方法
D B C A (<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)

浙公网安备 33010602011771号