Python中一个类的__init__方法中的self是什么?

Ane*_*dra 1 python oop class function python-2.7

我怀疑传递的参数是__init__python类中的方法.人们会说这是类实例在这里作为方法中的第一个参数传递__init__.

Class A():

   def __init__(self):
       pass

   def check(self):
      pass

a = A()
a.check()
Run Code Online (Sandbox Code Playgroud)

正如我们所理解的那样,'a'在方法的第一个参数中被传递__init__.但是在这里我们刚刚创建了类A的实例.至于其他方法检查,当我们这样做时a.check(),会理解这里我们正在调用带有类实例的检查,所以它正在被传递.但对于__init__方法,我们没有做任何事情,只是创建了实例.那么它是如何被传递的.

例如,a = a + 10 ......除非我们将初始化此表达式的开头,否则这将无法工作.同样如此__init__.

我们刚刚在这里创建了一个实例a = A().然后一个将在这里通过.

我知道我的问题有点棘手.但是在接受采访时我已经问过了.

请有人帮忙吗?

dec*_*eze 6

不会a传递,类实例被传递.实例在分配之前存在a.它独立存在a.举个例子:

[A() for _ in range(5)]
Run Code Online (Sandbox Code Playgroud)

A创建5个实例,即使它们没有直接分配给任何变量(可能会分配列表表达式,但不会分配每个个体A()).

在实例化一个类__new__时,该类创建新实例,然后对其进行调用__init__,然后返回新实例并(在您的情况下)分配给该实例a(有关更深入的详细信息,请参阅https://stackoverflow.com/a/ 43187010/476).


che*_*ner 5

type此示例中的步骤顺序(假设标准元类)是

  1. A()是使用type.__call__(A).实现的.
  2. type.__call__(A)电话A.__new__.
  3. A.__new__解析为object.__new__,返回一个新的实例A.
  4. type.__call__(A)传递返回值object.__new__to A.__init__(其中self第一个参数所用的名称__init__).
  5. type.__call__(A)然后返回绑定到名称的(初始化)对象a.