1.查了很多资料,以为已经对多继承的顺序算法了解了,但是自己测试还是有很多‘矛盾’,大概是只理解了表面意思。代码是一个我自己写的多继承的测试,我也在网上查了super()的用法【返回__mro__列表的第二个类,第一个是本身】,我理解的结果是A-B-D-Z依次执行,但结果还包含了E、F的初始化过程,想了一下午仍然搞不懂为什么?求助。
2.代码如下:
class Z():
def __init__(self):
print('enter Z')
print('leave Z')
class D(Z):
def __init__(self):
print('enter D')
super().__init__()
print('leave D')
class E(Z):
def __init__(self):
print('enter E')
super().__init__()
print('leave E')
class F(Z):
def __init__(self):
print('enter F')
super().__init__()
print('leave F')
class B(D,E):
def __init__(self):
print('enter B')
super().__init__()
print('leave B')
class C(E,F):
def __init(self):
print('enter C')
super().__init__()
print('leave C')
class A(B,C):
def __init__(self):
print('enter A')
super().__init__()
print('leave A')
a = A()
print(A.__mro__)
3.执行结果
enter A
enter B
enter D
enter E
enter F
enter Z
leave Z
leave F
leave E
leave D
leave B
leave A
(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.D'>, <class '__main__.C'>, <class '__main__.E'>, <class '__main__.F'>, <class '__main__.Z'>, <class 'object'>)
MMTTMM
慕丝7291255
慕田峪4524236
相关分类