基类中`super().__init__()`的目的是什么?

我了解 Ifsuper().__init__()在 Python 子类中,它继承了父类的属性。我只是想知道如果我们调用super().__init__()父类本身会怎样,如下所示:

class Base:
    def __init__(self,*args,**kwrgs):
        super.__init__(args, kwrgs)

super在父类中调用a有什么用?

回答

对于您的问题中的一个简单示例,确实没有意义。它会简单地调用object.__init__which 不会做太多事情并且不接受任何参数。

但是,它与多重继承有所不同。例如,以下代码:

class Base:
    def __init__(self, *args, **kwrgs):
        super().__init__(*args, **kwrgs)
        print("in Base")

class SecondBase:
    def __init__(self, *args, **kwrgs):
        super().__init__(*args, **kwrgs)
        print("in SecondBase")

class A(Base, SecondBase):
    def __init__(self, *args, **kwrgs):
        super().__init__(*args, **kwrgs)
        print("in A")

class B(SecondBase, Base):
    def __init__(self, *args, **kwrgs):
        super().__init__(*args, **kwrgs)
        print("in B")

print("A:")
A()
print("B:")
B()

将产生:

A:
in SecondBase
in Base
in A
B:
in Base
in SecondBase
in B
A:
in SecondBase
in Base
in A
B:
in Base
in SecondBase
in B

如您所见,BaseSecondBase都是您所说的类,即不继承。尽管如此,由于AandB的多重继承,super()调用分别返回Base/SecondBaseobject,具体取决于MRO. 这可以看作:


以上是基类中`super().__init__()`的目的是什么?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>