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
在多重繼承一定要注意該問題