Python super函數問題

super function: 函數厲害之處在於你不需要明確給出任何基(父)類的名字,他會自動幫你找出所有基類及對應的方法。

但是如果我要繼承多個父類呢?

測試:
先看正常代碼,不用super函數:

class A:
    def __init__(self):
        print('進入 A')
        print('退出 A')

class B(A):
    def __init__(self):
        print('進入 B')
        A.__init__(self)
        print('退出 B')

class C(A):
    def __init__(self):
        print('進入 C')
        A.__init__(self)
        print('離開 C')

class D(B, C):
    def __init__(self):
        print('進入 D')
        B.__init__(self)
        C.__init__(self)
        print('離開 D')
d = D()
進入 D
進入 B
進入 A
退出 A
退出 B
進入 C
進入 A
退出 A
離開 C
離開 D
class A:
    def __init__(self):
        print('進入 A')
        print('退出 A')

class B(A):
    def __init__(self):
        print('進入 B')
        super().__init__()
        print('退出 B')

class C(A):
    def __init__(self):
        print('進入 C')
        super().__init__()
        print('離開 C')

class D(B, C):
    def __init__(self):
        print('進入 D')
#        B.__init__(self)
#        C.__init__(self)
        super().__init__()
        print('離開 D')

class E(B, C):
    def __init__(self):
        print('進入 E')
        super().__init__()
        print('離開 E')
e = E()
進入 E
進入 B
進入 C
進入 A
退出 A
離開 C
退出 B
離開 E

在多重繼承一定要注意該問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章