Python中"self"的约定__init__与方法

7 投票
3 回答
851 浏览
提问于 2025-04-16 20:42
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__() 方法是在类的实例被创建后立刻调用的。

深入了解Python - 初始化和编写类

13

myClass = MyClass() 这行代码会调用 MyClass.__new__ 方法来创建一个 MyClass 的实例。接着,会用这个实例作为第一个参数,调用 MyClass.__init__ 方法。

你可以查看文档 object.__new__

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

这个方法用来创建类 cls 的新实例。

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

这个方法在实例被创建时被调用。

撰写回答