如果要在创建类之前更改属性dict或更改基元组,则必须使用
__new__。当
__init__看到参数时,该类对象已经存在。另外,
__new__如果要返回除所讨论类型的新创建的类以外的其他内容,则必须使用。
另一方面,在
__init__运行时,该类确实存在。因此,您可以执行一些操作,例如将对刚刚创建的类的引用提供给其成员对象之一。
编辑 :更改了措辞,以使其更清楚地表明“对象”是指类对象。

如果要在创建类之前更改属性dict或更改基元组,则必须使用
__new__。当
__init__看到参数时,该类对象已经存在。另外,
__new__如果要返回除所讨论类型的新创建的类以外的其他内容,则必须使用。
另一方面,在
__init__运行时,该类确实存在。因此,您可以执行一些操作,例如将对刚刚创建的类的引用提供给其成员对象之一。
编辑 :更改了措辞,以使其更清楚地表明“对象”是指类对象。