Python"自我"约定__init__ vs方法

Nix*_*Nix 7 python

class MyClass(object):
   def __init__(self):
       self.var = "hi"

   def some_method(self):
       print self.var

#for the example below
myClass= MyClass()
Run Code Online (Sandbox Code Playgroud)

所以我理解以下陈述是公平的.

myClass.some_method()
MyClass.some_method(myClass)
Run Code Online (Sandbox Code Playgroud)

这需要object,并将其作为第一个参数selfsome_method.

但当我这样做时:

myClass= MyClass()
Run Code Online (Sandbox Code Playgroud)

这个流程如何运作?

我假设它略有不同,一些魔法发生在幕后(某人有一些内存要分配).

这怎么转化为__init__(self)?什么传递给__init__ MyClass

Rom*_*huk 13

myClass= MyClass()调用MyClass.__new__方法来创建一个实例MyClass.之后MyClass.__init__使用此实例作为第一个参数调用.

看文档object.__new__:

宾语.__new__(cls [,...])

被调用以创建类cls的新实例.

宾语.__init__(自我[,...])

在创建实例时调用.

  • 这是完整的答案. (2认同)