Ste*_*fan 3 python oop inheritance multiple-inheritance python-3.x
请考虑以下代码:
class A(object):
def __init__(self):
pass
class B(object):
def __init__(self):
self.something = 'blue'
def get_something(self):
return self.something
class C(A,B):
def __init__(self):
super().__init__()
print(self.get_something())
Run Code Online (Sandbox Code Playgroud)
然后做:
c = C()
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
AttributeError: 'C' object has no attribute 'something'
Run Code Online (Sandbox Code Playgroud)
我想这是因为在使用super()时没有调用B的构造函数.有没有办法用Python 3实现正确的行为?
wim*_*wim 11
超类如果他们的子类那样应该使用super.如果将super().__init__()行添加 到A和B中,则示例应该再次起作用.
检查C的方法解析顺序:
>>> C.mro()
[__main__.C, __main__.A, __main__.B, builtins.object]
Run Code Online (Sandbox Code Playgroud)
这篇文章应该清楚.