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
,并将其作为第一个参数self
来some_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__
(自我[,...])在创建实例时调用.