我在 Python 中使用多重继承时遇到一些问题,无法理解我做错了什么。
我有如下定义的三个类 A、B、C 它不起作用。
class A(object):
def __init__(**kwargs):
.
.
class B(object):
def __init__(**kwargs):
# prepare a dictionary "options" with the options used to call A
super(B,self).__init__(**options)
def coolmethod(x):
#some cool stuff
对于 A 和 B,我没有任何问题。
我想创建一个继承自 A 和 B 的第三类 C 这样我就可以使用 B 中定义的 coolmethod,但想使用 A 中定义的构造函数。
尝试定义 class C(A,B)
不起作用,因为未定义 MRO。
但是定义 class C(B,A)
不允许我使用 A.init 而不是 B.init。
我该如何解决这个问题?
最佳答案
您可以直接调用 A.__init__() 而不是在 C: 中使用 super()
class C(B,A):
def __init__(self, **kwargs):
A.__init__(self, **kwargs)
关于Python 2.7 方法解析顺序覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16283137/