跳到内容

self-or-cls-assignment (PLW0642)

源自 Pylint 代码检查工具。

作用

检查实例方法和类方法中对 selfcls 的赋值。

此检查也适用于 __new__,即使这在技术上是一个静态方法。

为什么这不好?

在 Python 中,标识符 selfcls 分别是实例方法和类方法的第一个参数的约定。为这些变量分配新值可能会让阅读您代码的其他人感到困惑;使用不同的变量名可以使代码更清晰。

示例

class Version:
    def add(self, other):
        self = self + other
        return self

    @classmethod
    def superclass(cls):
        cls = cls.__mro__[-1]
        return cls

建议改为

class Version:
    def add(self, other):
        new_version = self + other
        return new_version

    @classmethod
    def superclass(cls):
        supercls = cls.__mro__[-1]
        return supercls