У нас есть многочисленные классы python, которые, похоже, не нуждаются в __init__
, их инициализация пустая либо вполне приемлема, либо даже предпочтительнее. Кажется, PyLint считает, что это плохо. Мне не хватает понимания о том, почему отсутствие __init__
- это плохой запах? Или я должен просто подавлять эти предупреждения и преодолевать это?Почему PyLint предупреждает об отсутствии __init__?
ответ
Для чего вы используете эти классы?
Если это всего лишь группировка функций, которые не нуждаются в поддержании какого-либо состояния, нет необходимости в __init__()
, но было бы разумнее просто переместить все эти функции в свой собственный модуль.
Если они поддерживают состояние (у них есть переменные экземпляра), то вы, вероятно, должны иметь __init__()
, чтобы эти переменные можно было инициализировать. Даже если вы никогда не предоставляете значения для них при создании класса, обычно рекомендуется определить их так, чтобы ваши вызовы методов не ссылались на переменные экземпляра, которые могут или не могут существовать.
Это, если вы не нуждаетесь в __init__()
, не стесняйтесь игнорировать это предупреждение.
Редактировать: Основываясь на вашем комментарии, кажется, что вы в порядке с AttributeError, вы получите ссылку на переменные перед инициализацией. Это отличный способ программирования ваших классов, поэтому в этом случае игнорирование предупреждения от PyLint является разумным.
Обычно вы должны использовать метод __init__()
для инициализации переменных экземпляра. Если вы этого не сделаете, обязательно отключите это предупреждение.
- 1. компилятор предупреждает об отсутствии символ препроцессора
- 2. pylint false positive for superclass __init__
- 3. xmllint предупреждает об отсутствии пространства создается файл XSLT
- 4. Почему Perl предупреждает меня об использовании псевдохешей?
- 5. Почему Code Analysis не предупреждает об NotImplementedException?
- 6. Почему компилятор не предупреждает об этом == null
- 7. Почему я получаю сообщение об отсутствии исключений?
- 8. Pylint ошибка W0232: класс не имеет метода __init__
- 9. Proguard предупреждает об удаленных классах
- 10. Почему Кланг предупреждает: `` && 'внутри' || '`?
- 11. Pylint ошибка __init__ метод из базового класса '*' не называется
- 12. pylint печатает предупреждение об отсутствии модуля строку документации, а это имеет
- 13. Ошибка объявления об отсутствии структуры
- 14. Решение об отсутствии необработанных исключений
- 15. Почему g ++-компоновщик не предупреждает об этом несогласованном объявлении функции?
- 16. Почему компилятор не предупреждает меня об очевидной ошибке?
- 17. Xcode предупреждает о отсутствии определения протокола, хотя используется @protocol
- 18. PHP CLI предупреждает об ошибках через php.ini
- 19. Возврат функции журнала с сообщением об отсутствии
- 20. Почему Cheesecake не выполняет pylint?
- 21. Javascript: mutationobserver не предупреждает об ошибке
- 22. C++ Visual Studio предупреждает об косвенном включении
- 23. gfortran предупреждает об исключении с плавающей запятой
- 24. Cassandra Tombstoning предупреждает об ошибках и отказах
- 25. Почему этот Javascript предупреждает огонь?
- 26. Почему не захваченная переменная предупреждает?
- 27. Уведомление об отсутствии Android при удалении/щелчке
- 28. Отображение заставки с сообщением об отсутствии
- 29. вопрос об отсутствии элемента в массиве
- 30. Извлечение активности после предупреждения об отсутствии времени
У этих классов вообще нет атрибутов или вы добавляете атрибуты после создания объекта? – delnan
Либо. В первом случае я вижу, что это само по себе плохой запах, но не я не хочу идти прямо сейчас. В последнем случае я предпочел бы исключение атрибута, если я попытаюсь использовать его перед значимой инициализацией. – Pete
У вас есть код и вывод pylint для показа? По какой-то причине Пилинт обычно жалуется на __init__. Если это действительно так, то нужно исправить :) – sthenault