Отсутствие предупреждения pylint "Redefining built-in" для локальной переменной класса
Я столкнулся с такой моделью Django:
class Car(models.Model):
type = CharField()
...
Однако pylint
не выдает никаких предупреждений о переопределении встроенной функции type
. Только когда я перемещаю ее из класса в глобальную область видимости, pylint
предупреждает об этом, но не внутри класса. Является ли это ожидаемым поведением? Если да, то как я могу переопределить его, чтобы он также показывал предупреждения внутри классов или функций?
VSCode 1.61.0
Ubuntu 20.04
Python 3.8.10
Я бы сказал, что это нормальное поведение, поскольку вы не прячете type
здесь
поскольку вам нужно написать что-то вроде my_car.type
для доступа к
type
для доступа к атрибуту, так что риска нет.
Если вы хотите, чтобы pylint предупреждал вас об этом, вы можете добавить type
в список bad-names
в вашем pylintrc
файле. Это вызовет сообщение C0104: disallowed-name
.
Не имеет значения, даже если вы переопределите встроенные функции, такие как type
из класса в глобальную область видимости, вы все равно сможете получить к ним доступ через builtins.type
в Py3 и __builtin__.type
в Py2.