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\'>)