__init__不是构造函数

100 篇文章 39 订阅 ¥39.90 ¥99.00
本文详细探讨了Python中的__init__方法,揭示它并非真正的构造函数,而是初始化对象时调用的方法。通过实例解析了__init__在类实例化过程中的作用,以及如何与实际构造函数__new__配合工作,帮助读者深化对Python面向对象编程的理解。
摘要由CSDN通过智能技术生成
		
__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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

scan724

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值