Отсутствие предупреждения 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.

Вернуться на верх