super().__init__()理解(三)
原创
©著作权归作者所有:来自51CTO博客作者luoganttcc的原创作品,请联系作者获取转载授权,否则将追究法律责任
- D 的类的顺序的是[D,B,A,C]
- 继承父类的的__init__方法在在类A中已经到终点,
A.mro()
Out[368]: [main.A, object],所以C不再执行
class A:
def __init__(self):
print('A')
class B(A):
def __init__(self):
print('B')
super().__init__()
class C:
def __init__(self):
print('C')
super().__init__()
class D(B,C):
def __init__(self):
print('D')
super().__init__()
d = D()
print(D.mro())
D
B
A
[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.C'>, <class 'object'>]
- 很简单当我们转换B,C的位置,类继承的顺序是[D,C,B,A],因为C中有
super().init(),指向B,我们看到 都执行了
class A:
def __init__(self):
print('A')
class B(A):
def __init__(self):
print('B')
super().__init__()
class C:
def __init__(self):
print('C')
super().__init__()
class D(C,B):
def __init__(self):
print('D')
super().__init__()
d = D()
print(D.mro())
D
C
B
A
[<class '__main__.D'>, <class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]