Подтвердить что ты не робот

Почему PyLint предупреждает об отсутствии __init__?

У нас есть множество классов python, которые, похоже, не нуждаются в __init__, инициализация их пустых является либо вполне приемлемой, либо даже предпочтительной. Кажется, PyLint считает, что это плохо. Мне не хватает понимания о том, почему отсутствие __init__ - плохой запах? Или я должен просто подавить эти предупреждения и преодолеть это?

4b9b3361

Ответ 1

Для чего вы используете эти классы?

Если они представляют собой просто группу функций, которые не нуждаются в поддержании какого-либо состояния, нет необходимости в __init__(), но имеет смысл просто переместить все эти функции в свой собственный модуль.

Если они поддерживают состояние (у них есть переменные экземпляра), то вы, вероятно, должны иметь __init__(), чтобы эти переменные можно было инициализировать. Даже если вы никогда не предоставляете значения для них при создании класса, обычно рекомендуется определить их так, чтобы ваши вызовы методов не ссылались на переменные экземпляра, которые могут или не могут существовать.

При этом, если вам не нужен __init__(), не стесняйтесь игнорировать это предупреждение.

изменить:. На основе вашего комментария кажется, что вы в порядке с атрибутом AttributeError, который вы получите при ссылке на переменные перед инициализацией. Это прекрасный способ программирования ваших классов, поэтому в этом случае игнорирование предупреждения из PyLint является разумным.

Ответ 2

Обычно вы будете использовать метод __init__() для инициализации переменных экземпляра. Если вы этого не сделаете, обязательно отключите это предупреждение.