如何在 python 中调用多个基 类 __init__

How to call multiple base classes __init__ in python

我怀疑多个 class 是否继承到派生的 class。我们如何调用所有基数class的init

class Base1(object):
    def __init__(self):
        print('Constructor of Base1 Class')

class Base2(object):
    def __init__(self):
        print('Constructor of Base2 Class')

class Base3(object):
    def __init__(self):
        print('Constructor of Base3 Class')

class Derived(Base1, Base2, Base3):
    def __init__(self):
        super(Derived, self).__init__()
        print('Constructor of Derived Class')

if __name__ == '__main__':
   inst = Derived()

当我运行上面的代码。我得到如下输出

Constructor of Base1 Class
Constructor of Derived Class

我认为 Base2 和 Base3 __init__ 没有被调用。有什么办法吗

您需要在每个构造函数中调用 super(),以便它从 _mro_

的列表中调用 __init__()
class Base1(object):
    def __init__(self):
        super().__init__()
        print('Constructor of Base1 Class')

class Base2(object):
    def __init__(self):
        super().__init__()
        print('Constructor of Base2 Class')

class Base3(object):
    def __init__(self):
        super().__init__()
        print('Constructor of Base3 Class')

class Derived(Base1, Base2, Base3):
    def __init__(self):
        #  super(Derived, self).__init__()
        super().__init__()
        print('Constructor of Derived Class')

if __name__ == '__main__':
   inst = Derived()


Constructor of Base3 Class
Constructor of Base2 Class
Constructor of Base1 Class
Constructor of Derived Class

我认为这是正确的做法:

class Base1(object):
    def __init__(self):
        print('Constructor of Base1 Class')

class Base2(object):
    def __init__(self):
        print('Constructor of Base2 Class')

class Base3(object):
    def __init__(self):
        print('Constructor of Base3 Class')

class Derived(Base1, Base2, Base3):
    def __init__(self):
        Base1.__init__(self)
        Base2.__init__(self)
        Base3.__init__(self)
        print('Constructor of Derived Class')

输出:

inst = Derived()
Constructor of Base1 Class
Constructor of Base2 Class
Constructor of Base3 Class
Constructor of Derived Class

来源: https://www.journaldev.com/14623/python-multiple-inheritance