在从`object`派生的类中调用super().__ init __()?

时间:2011-07-22 23:00:37

标签: python

Python documentation表示每个类的__init__方法负责初始化其超类。但对于新式类,最终基类是object。执行dir(object)表示object本身具有__init__方法,可能会初始化。有什么理由这样做吗?

我倾向于这样做以保持一致性和(稍微)更容易重构类heirarchy,但我想知道它是否是绝对必要的或被认为是最佳实践。

4 个答案:

答案 0 :(得分:15)

无法初始化object;它的__init__是无操作的。不过,这仍然是一种很好的做法,因为您可能希望稍后在层次结构中引入一个中间类。

答案 1 :(得分:5)

是的,做吧。这是一个很好的习惯,进入,并没有伤害。

答案 2 :(得分:5)

恕我直言,它根本没有任何意义。

  1. 它让你仔细检查继承,意识到它什么都不做
  2. 与使用函数调用的开销添加pass语句相同。
  3. 引用禅:Although practicality beats purity.
  4. Python 3不要求您将object声明为超类。

答案 3 :(得分:2)

是的,there is a reason为什么要这样做。

如果您需要使用多重继承,python的C3方法解析顺序(MRO)将不会调用所有__init__()基类。