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().然后一个将在这里通过.
我知道我的问题有点棘手.但是在接受采访时我已经问过了.
请有人帮忙吗?
不会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).
type此示例中的步骤顺序(假设标准元类)是
A()是使用type.__call__(A).实现的.type.__call__(A)电话A.__new__.A.__new__解析为object.__new__,返回一个新的实例A.type.__call__(A)传递返回值object.__new__to A.__init__(其中self第一个参数所用的名称__init__).type.__call__(A)然后返回绑定到名称的(初始化)对象a.