为什么超类__init__方法没有自动调用?

为什么超类__init__方法没有自动调用?,第1张

为什么超类__init__方法没有自动调用?

Python

__init__
与其他语言的 构造函数 之间的关键区别在于,
__init__
不是 构造函数:它是一个
初始化程序 (实际的 构造函数 (如果有,但是请参阅下文;-)是
__new__
并且再次完全不同。虽然 构建
所有超(,毫无疑问,这样做,你继续向下构建“之前”)显然是说你的一部分 构建 一个子类的实例,这显然是不适合的情况下 初始化
,因为在许多用例中,超类的初始化需要被跳过,更改和控制-发生在子类初始化的“中间”,如果发生的话,等等。


基本上,出于完全相同的原因,初始化程序的超类委派在Python中不是自动的,此类委派对于 任何 其他方法也不是自动的-请注意,那些“其他语言”对
任何 其他方法都不会自动进行超类委派其他方法… 只是 针对构造函数(如果适用,则为析构函数),正如我提到的,这 不是
Python的

__init__
方法。(的行为
__new__
也很特殊,尽管实际上与您的问题没有直接关系,因为它
__new__
是一个奇特的构造函数,实际上并不一定需要构造任何东西-
可以很好地返回现有实例,甚至是非实例) …显然Python为您提供了 很多 更多的控制机制的比“其他语言”你心目中,其中
包括具有在没有自动代表团
__new__
本身- !)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5668026.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存