'super' と明示的スーパークラス __init__() の違いは何ですか?
Python では、super キーワードを使用すると便利な方法が提供されます。親クラスのメソッドにアクセスします。その使用法を調べて、親の __init__ メソッドを呼び出す明示的な方法と対比してみましょう。
明示的な親クラスの初期化
class Child(SomeBaseClass): def __init__(self): SomeBaseClass.__init__(self)
この形式の継承では、明示的に親クラス SomeBaseClass の __init__ メソッド。子クラスをその特定の親に緊密に結合し、親の __init__ メソッドが常に存在すると想定します。
'super' 初期化
class Child(SomeBaseClass): def __init__(self): super().__init__()
super キーワードにより、次のことが可能になります。より柔軟な初期化プロセスを実現します。これにより、メソッド解決順序 (MRO) で子クラスの後に続く親クラスの __init__ メソッドが確実に呼び出されます。これにより、子の初期化に影響を与えることなく、複数の継承や基本クラスの追加が可能になります。
Python 2 と Python 3
Python 2 では、 super の使用は異なります:
super(Child, self).__init__()
ただし、Python 3 では、これは次のようになります。簡略化すると次のようになります。
super().__init__()
「super」を使用する利点
結論
明示的な SomeBaseClass.__init__(self) ) 呼び出しは、単純な継承シナリオでは十分ですが、より複雑なクラス階層では制限になる可能性があります。 super キーワードは、柔軟性、上位互換性、および依存関係の挿入のサポートを提供します。したがって、コードの保守性と再利用性が向上するため、親クラスの初期化には super を使用することをお勧めします。
以上がPython の継承: `super()` 呼び出しと明示的なスーパークラス `__init__()` 呼び出しの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。