我对python多继承有点困惑。python多继承超级函数
例如,如果你有:
class A(object):
def __init__(self):
print "init A"
super(A, self).__init__()
class B(A):
def __init__(self):
print "init B"
super(B, self).__init__()
class C(A):
def __init__(self):
print "init C"
super(C, self).__init__()
class D(C, B):
def __init__(self):
print "init D"
super(D, self).__init__()
if __name__ == '__main__':
D()
的方法解析顺序(MRO)将D-C-B-A。
为什么顺序不是d-C-A-B-A?
因为你不能在mro中有重复的东西... – Bakuriu
的确,Python的继承系统的整个设计是使钻石继承方案像你所展示的那样。由于重复路径到达最终基类,它们倾向于在其他语言(如C++)中做坏事。 – Blckknght