【发布时间】:2015-10-19 19:11:05
【问题描述】:
我对 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中有重复...
-
确实,Python 继承系统的整个设计就是让您展示的菱形继承方案成为可能。由于最终基类的路径重复,它们往往会在其他语言(如 C++)中做坏事。
标签: python multiple-inheritance