使用
__new__时,你需要控制一个新实例的创建。
使用
__init__时,你需要一个新的实例的控件初始化。
__new__是实例创建的第一步。首先调用它,它负责返回类的新实例。
相反,
__init__不返回任何东西。创建实例后,它仅负责初始化实例。
通常,除非你要
__new继承不可变类型(如
str,int,unipre或tuple),否则无需覆盖__`。
从2008年4月发布:何时使用
__new__vs __init__?在mail.python.org上。
你应该考虑到你通常想通过工厂来完成的工作,这是最好的方法。使用
__new__不是一个好的清洁解决方案,因此请考虑使用工厂。在这里,你有一个很好的工厂示例。



