跳到内容

类方法无效的第一个参数名 (N804)

源自 pep8-naming linter。

有时提供修复。

作用

检查类方法是否使用了除 cls 之外的名称作为其第一个参数。

__new__ 方法不在此检查范围内,相应的违规行为会被 bad-staticmethod-argument 捕获。

为什么这不好?

PEP 8 建议使用 cls 作为所有类方法的第一个参数

始终对类方法的第一个参数使用 cls

如果函数参数的名称与保留关键字冲突,通常最好附加一个尾随下划线,而不是使用缩写或拼写错误。 因此,class_clss 更好。(也许更好的方法是使用同义词来避免这种冲突。)

可以使用 lint.pep8-naming.ignore-nameslint.pep8-naming.extend-ignore-names 配置选项从此规则中排除名称。 例如,要允许使用 klass 作为类方法的第一个参数,请将 lint.pep8-naming.extend-ignore-names 选项设置为 ["klass"]

示例

class Example:
    @classmethod
    def function(self, data): ...

建议改为

class Example:
    @classmethod
    def function(cls, data): ...

修复安全性

此规则的修复被标记为不安全,因为重命名方法参数可能会更改程序的行为。

Options (选项)