Как python передает первую переменную в классе / экземпляре - PullRequest
0 голосов
/ 14 октября 2019

В моем классе:

class MyClass:
    def __init__(self):
        self.title = None

Как Python "знает", что передать MyClass в качестве первого аргумента для инициализации при выполнении:

MyClass()

Аналогично, если бы я имелметод класса, как бы Python "узнал", что в качестве первого аргумента (cls) он также должен передать MyClass?

1 Ответ

0 голосов
/ 14 октября 2019

Это просто, как написан интерпретатор (или компилятор). Работа интерпретатора (или компилятора) состоит в том, чтобы распознать, что

MyClass()

должен инициализировать объект MyClass и вызвать метод __init__ с вновь созданным объектом в качестве параметра self,Обратите внимание, что, как отмечено в одном из комментариев, это новый объект, который назначен параметру self, а не MyClass.

В случае, когда вы вызываете метод без инициализацииинтерпретатор (или компилятор) также знает, что вы вызываете метод, поэтому он помещает объект в качестве первого аргумента.

...