Python3分析类的继承结构时采用广度优先算法, 所以出现如下钻石继承情况时:
class Base:
def __init__(self):
print("THIS IS BASE.")
class Base1(Base):
def __init__(self):
print("This is Base1.")
super().__init__()
class Base2(Base):
def __init__(self):
print("This is Base2." )
super().__init__()
class Child(Base2, Base1):
def __init__(self):
print("This is Child.")
super().__init__()
Child()
输出结果如下:
This is Child.
This is Base2.
This is Base1.
THIS IS BASE.
执行顺序大致是 Child -> Base2 -> Base1 -> Base.
证明:
class Base:
def __init__(self):
print("THIS IS BASE.")
class Base1(Base):
def __init__(self, t):
print("This is Base1.%d" %t)
super().__init__()
class Base2(Base):
def __init__(self, t):
print("This is Base2.%d" %t)
super().__init__(t - 1)
class Child(Base2, Base1):
def __init__(self, t):
print("This is Child.%d" %t)
super().__init__(t - 1)
self.z = t
Child(3)
输出:
This is Child.3
This is Base2.2
This is Base1.1
THIS IS BASE.