self-or-cls-assignment (PLW0642)
Added in 0.6.0 · Related issues · View source
Derived from the Pylint linter.
What it does
Checks for assignment of self and cls in instance and class methods respectively.
This check also applies to __new__ even though this is technically
a static method.
Why is this bad?
The identifiers self and cls are conventional in Python for the first parameter of instance
methods and class methods, respectively. Assigning new values to these variables can be
confusing for others reading your code; using a different variable name can lead to clearer
code.
Example
class Version:
def add(self, other):
self = self + other
return self
@classmethod
def superclass(cls):
cls = cls.__mro__[-1]
return cls
Use instead: