[译]为什么在__new __()后总是调用__init __()?
Posted everfight
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[译]为什么在__new __()后总是调用__init __()?相关的知识,希望对你有一定的参考价值。
原文来源: 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 __()?的主要内容,如果未能解决你的问题,请参考以下文章
Python:总是使用 __new__ 而不是 __init__?