在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ 多繼承的問題

多繼承的問題

1.查了很多資料,以為已經(jīng)對多繼承的順序算法了解了,但是自己測試還是有很多‘矛盾’,大概是只理解了表面意思。代碼是一個我自己寫的多繼承的測試,我也在網(wǎng)上查了super()的用法【返回__mro__列表的第二個類,第一個是本身】,我理解的結(jié)果是A-B-D-Z依次執(zhí)行,但結(jié)果還包含了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.執(zhí)行結(jié)果
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'>)

回答
編輯回答
陪她鬧

因為你的C類的init后面少了兩橫啊。

2018年8月12日 19:58
編輯回答
小曖昧

多重繼承,A都是繼承了B,和C ,先繼承靠左的類即B,依次網(wǎng)上推,之后再繼承C,C繼承自EF,EF的實例過程就有了。不知道能不能把理解到。

2017年1月13日 14:47
編輯回答
傲嬌范

更正一下:
super(cls,ins).__init__()返回下一個類的同時,ins并沒有變,所以還是A類的實例,所以結(jié)果為什么不包含C呢?

2018年8月10日 02:00