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
在多重继承一定要注意该问题
本文通过实例对比了使用superfunction与不使用时,在多重继承场景下类构造方法的调用顺序差异。展示了superfunction如何简化代码并正确地解决多重继承带来的方法查找路径问题。
1867

被折叠的 条评论
为什么被折叠?



