在从`object`派生的类中调用super().__init__()?
Python的文档提到,每个类的__init__
方法负责初始化它的父类。不过对于新式类来说,最终的基类是object
。如果你运行dir(object)
,你会发现object
本身也有一个__init__
方法,理论上是可以被初始化的。那么这样做有什么必要呢?
我倾向于这样做是为了保持一致性,并且(稍微)让类的层次结构重构变得更简单,但我在想这样做是否真的必要,或者是否被认为是最佳实践。
4 个回答
5
在我看来,这根本没有任何意义。
- 你得仔细检查继承关系,才会发现它其实没什么用。
- 这就像是加了一个
pass
语句,但还多了一个函数调用的开销。 - 引用一句哲学:
虽然实用性胜过纯粹性。
- 在Python 3中,你不需要把
object
声明为超类。
5
是的,去做吧。这是一个很好的习惯,没什么坏处。
15
你其实不需要去初始化这个object
;它的__init__
方法其实什么都不做。不过,还是这样做是个好习惯,因为将来你可能想在这个类的层次结构中加入一个中间类。