18
class Num:
   def __init__(self,num):
      self.n = num

我读到该__init__方法返回None。当我执行a=Num(5)时,Num(5)将调用__init__该类的方法。但是如果__init__ 返回None则不a应该引用任何内容。而是a引用Class的对象。Num它是如何发生的?那么__init__返回None或类的对象呢?

4

2 回答 2

38

__init__()返回None。它是__new__()返回新实例。

于 2012-08-16T05:51:26.867 回答
2

当执行 a=Num(5) 时,您确实创建了对象并返回新创建的对象。但这并不像您__init__在创建对象时直接调用那么容易。 __init__在后台被一些 Python 魔术调用作为启动过程的一部分。基本上,这__new__是魔法的一部分。但是,只有极少数情况下,您想要摆弄__new__. 只有在您真的知道自己在做什么并且确实没有更简单的方法可以实现您的目标时,您才应该这样做。

于 2012-08-16T06:02:39.177 回答