Python中"self"的约定__init__与方法
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
传递了什么?
3 个回答
2
MyClass()
这个东西会创建一个全新的对象,然后把这个对象传给 __init__(self)
,在这里 self
就是这个新对象的代称。接下来,你可以在 self
上设置你想要的各种属性,最后 MyClass()
会把这个对象返回给你。
3
__init__()
方法是在类的实例被创建后立刻调用的。
13
myClass = MyClass()
这行代码会调用 MyClass.__new__
方法来创建一个 MyClass
的实例。接着,会用这个实例作为第一个参数,调用 MyClass.__init__
方法。
你可以查看文档 object.__new__
:
object.
__new__
(cls[, ...])这个方法用来创建类 cls 的新实例。
object.
__init__
(self[, ...])这个方法在实例被创建时被调用。