Pythonでは、クラスの継承を利用することで、既存のクラスの機能を引き継ぎつつ新たな機能を追加することが可能です。特に、__init__
メソッドはクラスのインスタンスが生成される際に自動的に呼び出されるため、クラスの初期化に重要な役割を果たします。
しかし、子クラスで__init__
メソッドを再定義(オーバーライド)すると、親クラスの__init__
メソッドは自動的には呼び出されません。これは、子クラスの__init__
メソッドが親クラスのものを上書きしてしまうためです。
この問題を解決するためには、子クラスの__init__
メソッド内でsuper()
関数を用いて親クラスの__init__
メソッドを明示的に呼び出す必要があります。
以下に具体的なコードを示します。
class Parent:
def __init__(self, child_num):
self._parent_num = 5
self._child_num = child_num
class Child(Parent):
def __init__(self, num):
super().__init__(num)
この例では、Child
クラスのインスタンスを生成する際に、Parent
クラスの__init__
メソッドがsuper().__init__(num)
によって呼び出されます。これにより、Parent
クラスで定義されたインスタンス変数_parent_num
と_child_num
が適切に初期化されます。
Pythonのクラス継承と__init__
メソッドの使い方を理解することで、より効率的なコードの設計と実装が可能になります。.