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

10 投票
4 回答
1823 浏览
提问于 2025-04-16 22:06

Python的文档提到,每个类的__init__方法负责初始化它的父类。不过对于新式类来说,最终的基类是object。如果你运行dir(object),你会发现object本身也有一个__init__方法,理论上是可以被初始化的。那么这样做有什么必要呢?

我倾向于这样做是为了保持一致性,并且(稍微)让类的层次结构重构变得更简单,但我在想这样做是否真的必要,或者是否被认为是最佳实践。

4 个回答

5

在我看来,这根本没有任何意义。

  1. 你得仔细检查继承关系,才会发现它其实没什么用。
  2. 这就像是加了一个 pass 语句,但还多了一个函数调用的开销。
  3. 引用一句哲学: 虽然实用性胜过纯粹性。
  4. 在Python 3中,你不需要把 object 声明为超类。
5

是的,去做吧。这是一个很好的习惯,没什么坏处。

15

你其实不需要去初始化这个object;它的__init__方法其实什么都不做。不过,还是这样做是个好习惯,因为将来你可能想在这个类的层次结构中加入一个中间类。

撰写回答