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

Как сообщить PyLint "это переменная, а не константа", чтобы остановить сообщение C0103?

У меня есть переменная уровня модуля в моей программе Python 2.6 с именем "_log", о которой PyLint жалуется:

C0103: Invalid name "_log" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)

Прочитав этот ответ, я понимаю, почему он это делает: он считает переменную константой и применяет постоянное регулярное выражение. Тем не менее, я прошу отличить: я думаю, что это переменная. Как мне сказать PyLint, чтобы он не жаловался? Как PyLint определяет, является ли это переменной или константой - обрабатывает ли это все переменные уровня модуля как константы?

4b9b3361

Ответ 1

# pylint: disable-msg=C0103

Поместите его в область, где вы хотите, чтобы эти предупреждения игнорировались. Вы также можете сделать вышеописанный комментарий конца строки, чтобы отключить сообщение только для этой строки кода.

IIRC верно, что pylint интерпретирует все переменные уровня модуля как "константы".

более новые версии pylint возьмут эту строку вместо

# pylint: disable=C0103

Ответ 2

Вы также можете указать список "добрых имен", который всегда разрешен в вашем pylintrc, например:

[BASIC]
good-names=_log

Ответ 3

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

def main():
    '''Entry point if called as an executable'''
    _log = MyLog()  # . . .

if __name__ == '__main__':
    main()

Это имеет то преимущество, что если у вас есть несколько полезных классов, я могу импортировать их, не запуская основной. __ name __ - это имя модуля, поэтому "if" терпит неудачу.

Ответ 4

В новых версиях pylint эта строка теперь

# pylint: disable=C0103

сообщение включения так же просто

# pylint: enable=C0103

Ответ 5

Если вы отключите сообщение локально в своем файле, тогда Pylint сообщит другое предупреждение!

Locally disabling invalid-name (C0103) [I:locally-disabled] 

Если вы намерены провести чистый пробег, и, конечно же, это должно быть целью, в противном случае, почему вы беспокоитесь, тогда вы можете отключить это сообщение и соответствующее локальное сообщение в файле конфигурации:

disable=locally-disabled, locally-enabled

Ответ 6

Как указывалось в других ответах, вы можете отключить определенное предупреждение PyLint (такое C0103), как включить следующую строку:

# pylint: disable=C0103

но это генерирует предупреждение Locally disabling invalid-name. Обратите внимание, что это вторичное предупреждение может быть полезно, если вы хотите напомнить об отключенном предупреждении. Если вы хотите отключить предупреждение без изменения вашего конфигурационного файла (который будет отключать предупреждение глобально), вы можете использовать:

# pylint: disable=I0011,C0103

Обратите внимание, что PyLint не выдаёт предупреждение о том, что вы отключите I0011!