无法创建一致的方法解析顺序(MRO错误)

时间:2018-08-07 17:59:31

标签: python python-3.6 method-resolution-order

class Base(object):
    def __init__(self):
        print ("Base")

class childA(Base):
    def __init__(self):
        print ('Child A')
        Base.__init__(self)

class childB(Base,childA):
    def __init__(self):
        print ('Child B')
        super(childB, self).__init__()


b=childB()

继承将作为childB,Base,childA,Base进行,并且在应用MRO之后,继承应变为childB,childA,Base。但是它抛出MRO错误。为什么?

1 个答案:

答案 0 :(得分:0)

childB试图从Base 两次继承,一次是通过childA,一次是直接继承。通过删除childB上的多重继承来解决此问题。

class Base(object):
    def __init__(self):
        print ("Base")

class childA(Base):
    def __init__(self):
        print ('Child A')
        Base.__init__(self)

class childB(childA):
    def __init__(self):
        print ('Child B')
        super(childB, self).__init__()

b=childB()