unexpected-special-method-signature (PLE0302)
Added in v0.0.263 · Related issues · View source
Derived from the Pylint linter.
What it does
Checks for "special" methods that have an unexpected method signature.
Why is this bad?
"Special" methods, like __len__, are expected to adhere to a specific,
standard function signature. Implementing a "special" method using a
non-standard function signature can lead to unexpected and surprising
behavior for users of a given class.
Example
class Bookshelf:
    def __init__(self):
        self._books = ["Foo", "Bar", "Baz"]
    def __len__(self, index):  # __len__ does not except an index parameter
        return len(self._books)
    def __getitem__(self, index):
        return self._books[index]
Use instead:
class Bookshelf:
    def __init__(self):
        self._books = ["Foo", "Bar", "Baz"]
    def __len__(self):
        return len(self._books)
    def __getitem__(self, index):
        return self._books[index]