Python multiple inheritance constructor not called when using super()

我只是一个虾纸丫 提交于 2019-12-01 20:59:36

Superclasses should use super if their subclasses do. If you add the super().__init__() line into A and B your example should work again.

Check the method resolution order of C:

>>> C.mro()
[__main__.C, __main__.A, __main__.B, builtins.object]

This article should clear things up.

As others have mentioned, the method resolution order is key here. If you want to call multiple superclass constructors, then you will have to call them directly.

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):
        A.__init__(self)
        B.__init__(self)
        print(self.get_something())
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!