【python】super

293 阅读1分钟

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