Как обойти предупреждение «Атрибут экземпляра, определенный вне __init__» от PyCharm ⇐ Python
Как обойти предупреждение «Атрибут экземпляра, определенный вне __init__» от PyCharm
Я написал этот класс с множеством переменных, которые мне нужно иметь возможность сбросить до значений по умолчанию в любой момент. Первоначально я «объявил» и инициализировал (насколько вы, кажется, можете объявить в Python) их в __init__, но это создало проблему: когда я хотел, чтобы внешняя сила установила эти переменные по умолчанию value мне пришлось бы повторить тридцать с лишним строк кода (поскольку в классе около тридцати переменных).
Я видел здесь еще одно сообщение, в котором описывается аналогичная проблема, но принятым ответом было установить для каждой переменной значение None, и тогда вы сможете без проблем получать к ним доступ из функций внутри класса.
В C++ вы объявляете эти переменные как переменные в заголовке, а затем можете вызывать одну и ту же функцию как при создании экземпляра, так и при вызове class_name.set_to_default(), и это все просто и аккуратно.
Наверняка есть способ сделать то же самое в Python без ошибки для каждой переменной? Что-то вроде:
класс Motor(): защита __init__(сам): self.reset_all_values() защита reset_all_values(self): self.speed_value = DEFAULT_SPEED_VALUE self.hours_value = DEFAULT_HOURS_VALUE # и т. д. Если да, то как мне это сделать, чтобы PyCharm не ныл на меня?
Или мне просто нужно быть невероятно многословным в коде? Python слишком отличается от других языков и вам приходится мыслить совершенно по-другому?
Думаю, важно отметить, что я программист на C, немного знаю C++ и понимаю, что, возможно, я просто слишком много думаю об этих языках.
Я написал этот класс с множеством переменных, которые мне нужно иметь возможность сбросить до значений по умолчанию в любой момент. Первоначально я «объявил» и инициализировал (насколько вы, кажется, можете объявить в Python) их в __init__, но это создало проблему: когда я хотел, чтобы внешняя сила установила эти переменные по умолчанию value мне пришлось бы повторить тридцать с лишним строк кода (поскольку в классе около тридцати переменных).
Я видел здесь еще одно сообщение, в котором описывается аналогичная проблема, но принятым ответом было установить для каждой переменной значение None, и тогда вы сможете без проблем получать к ним доступ из функций внутри класса.
В C++ вы объявляете эти переменные как переменные в заголовке, а затем можете вызывать одну и ту же функцию как при создании экземпляра, так и при вызове class_name.set_to_default(), и это все просто и аккуратно.
Наверняка есть способ сделать то же самое в Python без ошибки для каждой переменной? Что-то вроде:
класс Motor(): защита __init__(сам): self.reset_all_values() защита reset_all_values(self): self.speed_value = DEFAULT_SPEED_VALUE self.hours_value = DEFAULT_HOURS_VALUE # и т. д. Если да, то как мне это сделать, чтобы PyCharm не ныл на меня?
Или мне просто нужно быть невероятно многословным в коде? Python слишком отличается от других языков и вам приходится мыслить совершенно по-другому?
Думаю, важно отметить, что я программист на C, немного знаю C++ и понимаю, что, возможно, я просто слишком много думаю об этих языках.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как я могу обновить атрибут класса, когда я меняю атрибут экземпляра в Python?
Anonymous » » в форуме Python - 0 Ответы
- 139 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Не может определить, какой экземпляр перегруженной функции "init :: init" предназначен
Anonymous » » в форуме C++ - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему Pycharm предупреждает о изменчивых аргументах по умолчанию? Как я могу их обойти?
Anonymous » » в форуме Python - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-