class Num:
def __init__(self,num):
self.n = num
我读到__init__
方法返回None
。当我执行a=Num(5)
时,Num(5)
将调用该类的__init__
方法。但是如果{{ 1}}返回__init__
然后None
应该引用任何内容。而a
引用a
Class的对象。它是如何发生的?Num
也是如此返回__init__
或类的对象?
答案 0 :(得分:36)
__init__()
返回None
。它是__new__()
,返回新实例。
答案 1 :(得分:2)
当执行= Num(5)时,您确实创建了对象并返回了新创建的对象。但它并不像在创建对象时直接调用__init__
那么容易。
__init__
在后台被一些Python魔术称为启动过程的一部分。基本上__new__
是魔法的一部分。但是,只有极少数情况下,您想要摆弄__new__
。你应该这样做,如果你真的知道你在做什么,以及是否真的没有更容易的方法来实现你的目标。