【发布时间】:2017-02-13 22:46:50
【问题描述】:
我试图了解多重继承中的方法解析顺序。 这是我正在使用的代码。当我尝试创建“ClassC”类的对象时,只调用了 ClassA 的构造函数。在这种情况下,方法是如何解决的?
class ClassA:
def __init__(self):
print "inside a's init"
class ClassB:
def __init__(self):
print "inside b's init"
class ClassC(ClassA,ClassB):
pass
c = ClassC()
输出:
inside a's init
【问题讨论】:
-
您应该在 Python 2 中使用新式类,例如
class ClassA(object):(在 Python 3 中,所有类都是新式)。然后将super(ClassA, self).__init__()添加到ClassA的.__init__方法中。 (您也可以向ClassB添加类似的调用,但这不是必需的,因为ClassB是ClassC的继承链的末端)。如果 Python 核心开发人员 Raymond Hettinger 在链接问题中的回答不能完全回答您的问题,请告诉我。 -
这很有用 @PM2Ring 。谢谢
标签: python multiple-inheritance method-resolution-order