多重継承での親クラスのコンストラクターの呼び出し: 正しいアプローチ
問題の理解
多重継承では、複数の親クラスが属性とメソッドを提供します。幼児クラスへ。子クラスを適切に初期化するには、すべての親クラスのコンストラクターを呼び出す必要があります。ただし、これを行うための正しい方法を選択するのは、特に親クラスに異なる規則がある場合には困難になる可能性があります。
アプローチと考慮事項
親クラスのコンストラクターを呼び出すには、次の 2 つの典型的なアプローチがあります。
-
古いスタイル: ParentClass.__init__(self) を呼び出す
-
新しいスタイル: super(DerivedClass, self).__init__() を使用します。
選択は、親クラスが次の目的で設計されているかどうかによって異なります。多重継承。
シナリオとプロシージャ
-
無関係な基本クラス: 親クラスがスタンドアロンで多重継承用に設計されていない場合は、上記のいずれかの方法を使用して各コンストラクターを手動で呼び出す必要があります。
-
ミックスインとしての 1 つの親クラス: 1 つの親クラスがミックスインとして設計されている場合 (複数の親クラスを対象としています)継承)、次のコンストラクターが自動的に呼び出されます。この場合、子クラスでは super().__init__() のみを使用します。これにより、すべてのコンストラクター (ミックスインから開始) が呼び出されます。
-
協調基本クラス: すべての親クラスの場合協調継承用に設計されているため、未使用の引数を後続のコンストラクターに渡します。ここでも、子クラスで super().__init__() を使用してすべてのコンストラクターを呼び出します。
推論された推奨事項
- 可能であれば、親クラスが次の規則に従っていることを確認してください。同じ規則です。
- 別の親クラスを使用する場合は、明示的なコンストラクター呼び出しを使用せずに使用します。 super.
- ミックスインまたは協調クラスを使用する場合は、適切な継承順序で super を使用します (ミックスインが最初であるか、すべての引数がキーワード引数として使用されます)。
結論
選択多重継承で親クラスのコンストラクターを呼び出すための適切なアプローチは、親クラスの設計によって異なります。これらのシナリオと手順を理解することで、適切な初期化を確保し、よくある落とし穴を回避できます。
以上が多重継承では親クラスのコンストラクターをどのように呼び出す必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。