use super() to call the parent constructor

Metadata

ID: python-best-practices/init-call-parent

Language: Python

Severity: Warning

Category: Best Practices

Description

Calling the parent constructor should be done by calling super(), not by calling the parent object directly.

Non-Compliant Code Examples

class Class(Parent):
    def __init__(self):
        SomeClass.__init__(self)  # should use super()

Compliant Code Examples

# More than one parent, we need to know exactly what
# parent constructor to use
class DummyCIVisibilityWriter(DummyWriterMixin, CIVisibilityWriter):
    def __init__(self, *args, **kwargs):
        CIVisibilityWriter.__init__(self, *args, **kwargs)
        DummyWriterMixin.__init__(self, *args, **kwargs)
        self._encoded = None
class Class(Parent):
    def foo(self):
        SomeClass.__init__(self)  # outside of __init__, valid
class Class(Parent):
    def __init__(self):
        super().__init__(self)
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Seamless integrations. Try Datadog Code Analysis