Python类中的super() 以及 init()
单继承
class Base():
def __init__(self):
print("create Base")
class A(Base):
def __init__(self):
print("class A", end=' ')
super(A, self).__init__()
class B(Base):
def __init__(self):
print("class B", end=' ')
super(B, self).__init__()
>> create Base
class A create Base
class B create Base
多重继承 ?
class Base():
def __init__(self):
print("create Base")
class A(Base):
def __init__(self):
print("class A")
super(A, self).__init__()
print("leave A")
class B(Base):
def __init__(self):
print("class B")
super(B, self).__init__()
print("leave B")
class C(A, B):
def __init__(self):
print("class C")
super(C, self).__init__()
print("leaVE C")
c = C()
>> class C
class A
class B
create Base
leave B
leave A
leave C
执行顺序: 初始化 class C,先调用class A 的构造方法中的 super(A, self).init(),返回当前类的继承顺序中 A 后的一个类 class B;然后再执行childB().init(),这样顺序执行下去。