class MyClass(object):
def __init__(self):
self.var = "hi"
def some_method(self):
print self.var
#for the example below
myClass= MyClass()
所以我理解以下陈述是公平的。
myClass.some_method()
MyClass.some_method(myClass)
需要object
并将其作为第一个参数self
传递给some_method
。
但是当我这样做时:
myClass= MyClass()
此流程如何运作?
我假设它略有不同,一些魔法发生在幕后(某人有一些记忆要分配)。
这如何转化为__init__(self)
?传递给__init__
MyClass
的内容是什么?
答案 0 :(得分:13)
myClass= MyClass()
调用MyClass.__new__
方法创建MyClass
的实例。之后使用此实例作为第一个参数调用MyClass.__init__
。
请参阅文档object.__new__
:
object。
__new__
(cls [,...])调用以创建类cls的新实例。
object。
__init__
(self [,...])创建实例时调用。
答案 1 :(得分:3)
__init__()
方法。
答案 2 :(得分:2)
MyClass()
创建一个全新的对象,该对象作为参数__init__(self)
传递给self
。然后,您可以在self
上设置所需的任何字段,然后MyClass()
将其返回。