super()找到父类
新式类继承顺序:D->B->C->A, 广度优先,从左到右
事实上类中的
mro
属性(method resolution order)中定义了继承顺序,我们可以打印出来验证一下:
class A: def __init__(self): print('A') super().__init__() def process(self): print('A is processing')class B(A): def __init__(self): print('B') super().__init__()class C(A): def __init__(self): print('C') super().__init__() def process(self): print('C is processing')class D(B, C): def __init__(self): print('D') super().__init__()d = D()# 输出结果如下:DBCA
print(D.__mro__)# 输出结果(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)