本问题已经有最佳答案,请猛点这里访问。
我如何知道super()将在MRO中采用哪条路径?
阅读:Python的Super被认为是有害的,Python的Super()被认为是超级!
这两个资源可以回答你所有的问题。
简而言之,
E继承自C, d继承自A, A继承自
注意
super ()
Python中的super()的主要目的是在派生类中调用重写的基类方法,就像其他语言中的super一样。这样做通常是为了派生类方法可以通过在自己的代码之前或之后调用基类方法来扩充基类方法,而不是完全替换基类方法。
1 2 3 4 5 6 | class Derived(Base): def method(self, arg): # Maybe do something here super(Derived, self).method(arg) # Could so something here as well |
super()函数实际上是通过返回一个代理类的对象来工作的,这个代理类将调用委托给父类。在本例中使用super()的好处是不需要显式地命名基类,这有助于可维护性。
super()函数还可以用于更复杂的多重继承情况,在这种情况下,它可以执行委托给姐妹类等操作