Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonにおけるメソッドのオーバーライドとは?基本と実例をわかりやすく解説

Pythonでは、親クラス(スーパークラス)で定義されたメソッドを、子クラス(サブクラス)側で自由に上書きすることができます。この仕組みを「メソッドのオーバーライド」と呼びます。

オーバーライドを行う主な理由は、サブクラスにおいて親クラスとは異なる特別な処理や振る舞いを持たせたい場合です。継承した機能をそのまま使うのではなく、自分のクラスに合わせてカスタマイズできるのが大きなメリットです。

メソッドのオーバーライドの例

以下は、親クラスのメソッドを子クラスで上書きする基本的なサンプルコードです。

#!/usr/bin/python3

class Parent:  # 親クラスを定義
    def myMethod(self):
        print('Calling parent method')

class Child(Parent):  # Parentクラスを継承した子クラスを定義
    def myMethod(self):
        print('Calling child method')

c = Child()   # 子クラスのインスタンスを生成
c.myMethod()  # オーバーライドされたメソッドが呼び出される

実行結果

上記のコードを実行すると、次のような出力が得られます。

Calling child method

コードの解説

Child クラスは Parent クラスを継承していますが、myMethod を独自に定義し直しています。そのため、インスタンス c に対して myMethod() を呼び出すと、親クラスのメソッドではなく子クラス側のメソッドが優先的に実行されるのです。

このように、継承関係にあるクラスで同じ名前・同じ引数構成のメソッドを定義すると、常に子クラスの定義が優先されます。これがオーバーライドの基本的な動作です。

補足:親クラスのメソッドも呼びたい場合

子クラスで上書きしつつ、親クラスの元の処理も利用したい場合は、組み込み関数 super() を使います。

class Child(Parent):
    def myMethod(self):
        super().myMethod()  # 親クラスのメソッドを呼び出す
        print('Calling child method')

このように書くことで、親クラスの処理を実行した後に、子クラス独自の処理を追加できます。オーバーライドはオブジェクト指向プログラミングにおけるポリモーフィズム(多態性)を実現する重要なテクニックなので、ぜひ使いこなせるようになりましょう。

  1. Pythonでメソッドをオーバーライドする方法|基本の仕組みとコード例

    オーバーライドとは?オーバーライド(上書き)とは、クラスが基底クラス(親クラス)から受け継いだメソッドの実装を、独自の処理に変更できる仕組みのことです。オーバーライドが重要な理由オーバーライドはオブジェクト指向プログラミング(OOP)において非常に重要な概念であり、継承の力を最大限に引き出すために欠かせません。メソッドオーバーライドを利用することで、あるクラスは別のクラスの機能を「引き継ぎ」ながら、コードの重複を避けつつ、その一部だけを拡張したりカスタマイズしたりすることができます。つまり、オーバーライドは継承機構の一部なのです。Pythonでのオーバーライドのやり方Pythonでは、子クラス

  2. Pythonのos.pipe()関数とは?パイプによるプロセス間通信の基本を解説

    Pythonのos.pipe()関数は、新しいパイプを作成し、読み取り用と書き込み用の2つのファイルディスクリプタからなるペア (r, w) を返します。この関数は主に、親プロセスと子プロセスの間でデータをやり取りするプロセス間通信(IPC)を実現するために使用されます。 os.pipe()の基本的な動作 r(読み取り用ディスクリプタ): パイプからデータを読み出すために使用します。 w(書き込み用ディスクリプタ): パイプへデータを書き込むために使用します。 パイプは一方通行のデータ通路であり、書き込まれたデータは先入れ先出し(FIFO)の順序で読み出されます。 サンプルコード:fork