class 局部变量没有 pylint 警告 "Redefining built-in"

No pylint warning "Redefining built-in" for a class local variable

我遇到了这样一个 Django 模型:

class Car(models.Model):
    type = CharField()
    ...

但是,pylint 不会发出任何关于重新定义内置函数 type 的警告。只有当我将它从 class 移出到全局范围 pylint 时才会对此发出警告,但不会在 class 内。这是预期的行为吗?如果是这样,我如何覆盖它以在 classes 或函数中显示警告?

VSCode 1.61.0
Ubuntu 20.04
Python 3.8.10

我会说这是正常行为,因为您没有在此处隐藏 type 因为你需要写类似 my_car.type 的东西来访问 type属性所以没有风险。

如果您仍然希望 pylint 警告您,您可以添加 typepylintrc 文件中的列表 bad-names。它将引发 C0104: disallowed-name 消息。

没关系,即使你将type等内置函数从class中重新定义到全局范围内,你仍然可以通过builtins.type访问它在 Py3 和 __builtin__.type 在 Py2.