采用新式类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