我對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