__init__方法在python中返回什么

时间:2012-08-16 05:50:13

标签: python

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__或类的对象?

2 个答案:

答案 0 :(得分:36)

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

答案 1 :(得分:2)

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