码迷,mamicode.com
首页 > 其他好文 > 详细

[译]为什么在__new __()后总是调用__init __()?

时间:2019-07-29 14:48:26      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:创建   overflow   有一个   class   ini   可变   tuple   stack   ref   

原文来源: https://stackoverflow.com/questions/674304/why-is-init-always-called-after-new

需要控制新实例的创建时,请使用__new__。

需要控制新实例的初始化时,请使用 init

__new__是实例创建的第一步。它首先被调用,并负责返回您的类的新实例。

相比之下, __ init__不会返回任何内容; 它只负责在创建实例后初始化它。

通常,除非您继承了str,int,unicode或tuple之类的不可变类型,否则不应该覆盖__new__。

来自:http://mail.python.org/pipermail/tutor/2008-April/061426.html

您应该考虑到您尝试做的事情通常是通过工厂完成的,这是最好的方法。使用__new__不是一个很好的清洁解决方案,所以请考虑工厂的使用。在这里你有一个很好的工厂例子。

[译]为什么在__new __()后总是调用__init __()?

标签:创建   overflow   有一个   class   ini   可变   tuple   stack   ref   

原文地址:https://www.cnblogs.com/everfight/p/python_new_init.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!