Почему PyLint предупреждает об отсутствии __init__? - PullRequest
20 голосов
/ 01 февраля 2012

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

Ответы [ 2 ]

12 голосов
/ 01 февраля 2012

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

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

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

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

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

1 голос
/ 01 февраля 2012

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

...