Pythonでクラスの継承を行う方法

PythonはJavaやC++などのプログラミング言語と同様にクラスを継承することができます。

継承することでオブジェクト指向プログラミングの特徴である

  • カプセル化
  • 差分プログラミング
  • ポリモーフィズム

    を実現することができます。
    カプセル化に関してはJavaやC++のように完全なカプセル化はできないのですが・・・

    Pythonでクラス内にPrivate変数を作成する方法
    Pythonではクラス内に「__(アンダーバー2つ)」を付加した変数を宣言することによって疑似的にPrivate変数を作成することができます。ただしクラス内の「__」付きの変数とインスタンスに直接設定した「__」の付きの変数は別物になるということを意識して使う必要があります。
    スポンサーリンク

    Pythonでクラスの継承を行う方法

    Pythonでは基底クラス(親クラスやベースクラスなどとも呼ばれる)を継承してサブクラス(子クラスなどとも呼ばれる)を作成することができます。

    継承を行うことで基底クラスの機能をそのままサブクラスで利用することもできます。

    Pythonでのクラスの継承

    Pythonでクラスを継承するにはサブクラスの宣言時に継承するベースクラスの名前を指定します。

    上記の例ではChildClassというサブクラスでBaseClassというベースクラスを継承しています。

    Pythonでのメソッドの継承

    Pythonでメソッドを継承するにはサブクラスでは何もする必要はありません。

    そのままベースクラスのメソッドを呼び出します。

    上記のプログラムを実行すると

    と表示されます。

    ちなみに「__init()__」は各クラスのコンストラクタで、各メソッドに渡されている「self」はそれぞれのインスタンス自身が渡されてきます。

    Pythonでのインスタンス変数の継承

    Pythonでは各インスタンス内で再利用可能なインスタンス変数を持つことができます。

    上記のプログラムを実行すると

    と表示されます。
    上記のプログラムの中の「super().__init__( name )」のsuper()は基底クラスを表します。

    Pythonでのポリモーフィズムの実現

    Pythonではベースクラスのメソッドをオーバーライドすることによりポリモーフィズムを実現することができます。

    オブジェクト指向プログラミングにおいてオーバーライド (override) とは、スーパークラスで定義されたメソッドをサブクラスで定義し直し、動作を上書き(変更)することです。
    ポリモーフィズム(英: Polymorphism)とは、プログラミング言語の型システムの性質を表すもので、プログラミング言語の各要素(定数、変数、式、オブジェクト、関数、メソッドなど)についてそれらが複数の型に属することを許すという性質

    以下のプログラムの例では各部署によって異なる「仕事をする(doWork())メソッド」を営業部、経理部、技術部クラスがオーバライドすることでポリモーフィズムを実現しています。

    上記のプログラムを実行すると

    となります。

    まとめ

    PythonではJavaやC++などのオブジェクト指向言語と同様にクラスの継承を行うことで差分プログラミングやポリモーフィズムを実現することができます。

    このことにより効率の良いプログラミングが行えるようになっています。

    以上、Pythonでクラスの継承を行う方法でした。

    タイトルとURLをコピーしました