Понимание "слишком много предков" от 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)
что это значит и как я могу это исправить?
3 ответов
проблема в том, что вы наследуете от класса, который имеет (слишком) много предков: RegisterForm. В вашем случае вы не можете много сделать об этом, кроме остановки его использования, что, вероятно, не вариант. Таким образом, вы можете отключить это сообщение для этого класса, например:
class ExtendedRegisterForm(RegisterForm): # pylint: disable=too-many-ancestors
из документации здесь: http://docs.pylint.org/features.html
too-many-ancestors (R0901): слишком много предков (%s/%s) используется, когда класс имеет слишком много родительских классов, попробуйте уменьшить это, чтобы получить более простой (и так проще в использовании) класс.
в дополнение к директивам отключения в исходном коде вы можете настроить это с помощью опции -- max-parents= commandline. Вы также можете указать это в файле config (.pylintrc):
[DESIGN]
max-parents=15
Как вы можете видеть, я установил его на 15, так как многие классы в Django (мой проект), особенно его классы представления, будут иметь иерархии, которые глубже, чем по умолчанию 7.