Skip to content

bad-dunder-method-name (PLW3201)#

Derived from the Pylint linter.

This rule is unstable and in preview. The --preview flag is required for use.

What it does#

Checks for misspelled and unknown dunder names in method definitions.

Why is this bad?#

Misspelled dunder name methods may cause your code to not function as expected.

Since dunder methods are associated with customizing the behavior of a class in Python, introducing a dunder method such as __foo__ that diverges from standard Python dunder methods could potentially confuse someone reading the code.

This rule will detect all methods starting and ending with at least one underscore (e.g., _str_), but ignores known dunder methods (like __init__), as well as methods that are marked with @override.

Additional dunder methods names can be allowed via the lint.pylint.allow-dunder-method-names setting.

Example#

class Foo:
    def __init_(self):
        ...

Use instead:

class Foo:
    def __init__(self):
        ...

Options#