super() を使って親コンストラクタを呼び出す
メタデータ
ID: python-best-practices/init-call-parent
言語: Python
重大度: 警告
カテゴリー: ベストプラクティス
説明
親コンストラクタを呼び出すには、親オブジェクトを直接呼び出すのではなく、super()
を呼び出す必要があります。
非準拠コードの例
class Class(Parent):
def __init__(self):
SomeClass.__init__(self) # super() を使用する必要があります
準拠コードの例
# 親が複数あり、どの親コンストラクタを使用するか
# 正確に知る必要があります
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) # __init__の外側、有効
class Class(Parent):
def __init__(self):
super().__init__(self)