__init__()方法又被称为构造器(constructor)。
__init__ as a constructor?
称其为类的构造函数是很诱人的但是不正确的,
它是诱人的,因为它看起来像一个构造函数(
按照惯例,__init__是类的第一个方法)
它的行为类似于(它是在一个新创建的类实例的第一段代码)
甚至听起来像一个(init 当然暗示了一种类似于构造函数的性质)
不正确的,因为在调用__init__时对象已经被构造,
你已经有一个正确的引用到一个类的实例
Quote表明 把__init__称为一个构造器是不正确的,
因为对象是已经在调用__init__前构造好了。
但是,我一直认为 构造函数被调用只有在对象被构造时
因为它本质上是用于初始化实例的数据成员,
在C++中,对象是不完整的 当构造器被调用时,
实际上,根据docs.python.org/reference/datamodel.html#basic-customization
Foo() 是一个构造器表达式,Foo.__init__ 是一个构造器
将其称为类的构造函数是很诱人的但是不正确的,
它很诱人,因为它看起来像一个构造器(按照惯例,
它是类中定义的第一个方法)
表现类似于一个(它是新创建类实例的一段代码),
甚至听起来像(init 暗示了一个构造函数的性质)
不正确的,因为在调用__init__的时间点 对象已经被构建了
你已经有了一个正确的引用到类的新实例
Quote 建议是不正确的调用__init__ 作为一个构造器
因为对象已经构建好了 在__init__被调用的时候 。
但是 我一直认为 构造器被调用只有在对象被构造时
因为它本质上是用来初始化实例数据
在C++ 对象是不完整的 当构造器被调用时,
如果一个Python 基于 class 调用一个方法,在子类中重写
那个方法使用的属性 没有被设置(因为 他们的初始化发生在
调用基类构造器 在子类构造函数中)
在C++,当一个构造器 被调用一个实例是已经分配了内存
但是没有填充任何值
这是一个术语问题,不是技术问题。 我们是习惯于其他语言的构造器
f
__init__不是构造函数
最新推荐文章于 2022-05-14 14:56:05 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)