当覆盖__init__时,我会在开头或结尾调用基类的__init__吗?

时间:2016-08-22 08:09:51

标签: python oop override

我有以下简短示例,其中我从A继承了一个类Base并覆盖了__init__。在__init__中调用Base.__init__

class A(Base):
  def __init__(self):
    super(A, self).__init__()
    ... my initialisation ...

是否有规则首先调用Base的__init__(在需要时),然后初始化其余部分或是否应该反过来?

有时候我需要打电话给__init__,然后做其余的事情,有时我需要反过来。在某些情况下,我必须编写一些初始化,然后调用基类的__init__,然后进行最后的初始化。

也许给自己一个答案:阅读基类的文档,或者如果不可用,请研究代码。

它应该是一种方式,或者您如何记录它?

1 个答案:

答案 0 :(得分:4)

不,没有关于在哪里调用它,或者根本不调用它的规则。如果符合您的具体情况,请将其称为

换句话说,super(A, self).__init__() 只是另一个方法调用,尽管它专门使用从基类查找的方法。像对待任何其他方法调用一样对待它,所以在需要时将其命名为