Python multiple inheritance constructor not called when using super() Python multiple inheritance constructor not called when using super() python-3.x python-3.x

Python multiple inheritance constructor not called when using super()


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):        passclass B(object):    def __init__(self):        self.something = 'blue'    def get_something(self):        return self.somethingclass C(A,B):    def __init__(self):        A.__init__(self)        B.__init__(self)        print(self.get_something())