Почему определение переменной объекта за пределами __init__ нахмурилось?

Я иногда определяю переменную объекта за пределами __init__. plint и моя IDE (PyCharm) жалуются.

class MyClass():
    def __init__(self):
        self.nicevariable = 1   # everyone is happy

    def amethod(self):
        self.uglyvariable = 2   # everyone complains

plint вывод:

W:  6, 8: Attribute 'uglyvariable' defined outside __init__ (attribute-defined-outside-init)

Почему это неправильная практика?

Ответ 1

Python позволяет добавлять и удалять атрибуты в любое время. Есть две проблемы: не делать это при __init__

  • Ваши определения не все в одном месте
  • Если вы используете его в функции, вы, возможно, еще не определили его