Python“自我”约定__init__ vs方法

时间:2011-07-02 13:50:36

标签: python

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 个答案:

答案 0 :(得分:13)

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

请参阅文档object.__new__

  

object。__new__(cls [,...])

     

调用以创建类cls的新实例。

     

object。__init__(self [,...])

     

创建实例时调用。

答案 1 :(得分:3)

在创建类的实例后立即调用

__init__()方法。

Dive into Python - Initializing and Coding Classes

答案 2 :(得分:2)

MyClass()创建一个全新的对象,该对象作为参数__init__(self)传递给self。然后,您可以在self上设置所需的任何字段,然后MyClass()将其返回。