self-or-cls-assignment (PLW0642)
Derived from the Pylint linter.
What it does
Checks for assignment of self
and cls
in instance and class methods respectively.
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: