采用新式类super继承,基类必须继承object,并且在多重继承时,父类只执行一次
class A(object):
def __init__(self):
print ("enter A")
super(A, self).__init__() # new
print ("leave A")
class B(object):
def __init__(self):
print ("enter B")
super(B, self).__init__() # new
print ("leave B")
class C(A):
def __init__(self):
print ("enter C")
super(C, self).__init__()
print ("leave C")
class D(A):
def __init__(self):
print ("enter D")
super(D, self).__init__()
print ("leave D")
class E(B, C):
def __init__(self):
print ("enter E")
super(E, self).__init__() # change
print ("leave E")
class F(E, D):
def __init__(self):
print ("enter F")
super(F, self).__init__() # change
print ("leave F")
f = F()
结果:
enter F
enter E
enter B
enter C
enter D
enter A
leave A
leave D
leave C
leave B
leave E
leave F
本文详细解析了Python中使用super进行新式类继承的方法,包括如何确保基类正确初始化,以及在多重继承中父类仅执行一次的技巧。通过具体实例展示了正确的super调用顺序。
4419

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



