__init__作为构造函数?


问题内容

深入Python -

将其称为类的构造函数将很诱人,但不正确。这很诱人,因为它看起来像一个构造函数(按照惯例,__init__是为该类定义的第一个方法),就像一个构造函数(
这是在新创建的类实例中执行的第一段代码),甚至听起来像一个( “
init”无疑暗示了一种类似构造函数的性质)。错误的,因为调用时已经构造了对象__init__,并且您已经具有对类的新实例的有效引用。

引用表明,将其__init__作为 构造函数 调用是不正确的,因为在调用时该对象已被构造__init__。但!我一直给人的印象是, 构造函数
仅在构造对象之后才被调用,因为它本质上用于初始化实例的数据成员,如果在 构造函数 被调用时对象不存在,这将是没有意义的?(来自C ++ /
Java背景)


问题答案:

如果您有课程,Foo那么:

  • Foo()构造函数
  • Foo.__init__()初始值设定项
  • Foo.__new__()分配器

Python对象的构建只是分配一个新实例,然后初始化该实例。