Рассмотрим следующий пример:Как Python знает переменную экземпляра без определения __init__?
class X:
def run(self):
print("An example.")
X().run()
Выход есть:
> An example.
Но когда мы опускаем ссылку на экземпляр:
class X:
def run():
print("An example.")
X().run()
The output is:
TypeError: run() takes 0 positional arguments but 1 was given
Когда мы создаем класс, __ new __ вызывается и экземпляр создается, нормально. Но как это требует экземпляра без определения __ init __? (Я удивлен, потому что я всегда написал __ init __, думая, что он отвечал за определение соглашения/само имя для ссылки на переменную). Я смущен.
хорошо, 'X(). Запуска()' 'вызывает запуск (object_ref)', где 'object_ref' ваш старый' self' – Pynchia
в случае 'self' не нужен, вы можете украсить метод с' @ staticmethod'. Посмотрите, как [this SO QA] (http://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod-in-python) помогает пролить свет на предмет статичности и class – Pynchia
Я бы рекомендовал начать использовать классы нового стиля. Пожалуйста, прочитайте [this SO QA] (http://stackoverflow.com/questions/54867/what-is-the-difference-between-old-style-and-new-style-classes-in-python) по теме – Pynchia