Понимание "Слишком много предков" из pylint
example.py:
'''
demo too many ancestors
'''
from flask_security.forms import RegisterForm
from wtforms.fields import TextField
class ExtendedRegisterForm(RegisterForm):
'''An extended register form'''
name = TextField('Name', [])
Когда я запускаю pylint:
$ pylint -r n example.py
************* Module example
R: 7, 0: Too many ancestors (10/7) (too-many-ancestors)
Что это значит и как я могу его исправить?
Ответы
Ответ 1
Из документации здесь: http://docs.pylint.org/features.html
слишком много-предков (R0901): Слишком много предков (% s/% s) Используется, когда класс имеет слишком много родительских классов, попробуйте уменьшить это, чтобы получить более простой (и так проще в использовании).
Ответ 2
Проблема в том, что вы наследуете от класса, который сам (тоже) много предков: RegisterForm. В вашем случае вы не можете много обойти это, кроме того, чтобы остановить его, что, вероятно, не является вариантом. Поэтому вы можете отключить это сообщение для этого класса, например:
class ExtendedRegisterForm(RegisterForm): # pylint: disable=too-many-ancestors
Ответ 3
В дополнение к директивам отключения в исходном коде вы можете настроить это через параметр -max-parents = commandline. Вы также можете указать это в конфигурационном файле (.pylintrc):
[DESIGN]
max-parents=15
Как вы можете видеть, я установил его равным 15, так как в Django (мой проект), особенно в его классах классов, будет много иерархии, которые будут глубже, чем значение по умолчанию.
Ответ 4
в основном добавьте в json или .pylintrc --max-parents='yourrequirednumber'
Примечание: --max-parents=7
по умолчанию
При использовании кода Visual Studio (VSC) вы можете легко переопределить конфигурацию по умолчанию, добавив приведенный ниже код в файл settings.json.
Перейдите → UserSettings ctrl+,
(ярлык по умолчанию) → нажмите... (дополнительные действия) → открыть settings.json → Добавить, чтобы перезаписать настройки по умолчанию этого кода:
"python.linting.pydocstyleArgs": ["--max-parents=25"]
ПРИМЕЧАНИЕ2: если pylint_django не установлен: $ pip install pylint-django