Pythonでabcモジュールを使って抽象メソッドを作成する

PythonではJavaやC++のようなほかのプログラミング言語のように、言語的に抽象メソッド(Abstract Method)を作成することができません。

でもabcモジュールを利用すればPythonでも抽象メソッド(Abstract Method)を作成することができます。

スポンサーリンク

Pythonで抽象メソッド(Abstract Method)を作成する

Pythonで抽象メソッド(Abstract Method)を作成するにはabcモジュールを使用すればできます。

抽象(Abstract Method)メソッドとは、基底クラス(ベースクラスや親クラスともいう)が持つメソッドをサブクラス(子クラス)に対してオーバーライドを強制するメソッドのこと。
基底クラスではメソッドのインターフェースのみ規定し、その実装はサブクラスに任せる手法。

abcモジュールの使い方

実際にPythonで抽象メソッド(Abstract Method)を作成するにはabcモジュールをImportし、抽象メソッド(Abstract Method)ををもつクラスで@abstractmethodデコレーターを使用して指定します。

抽象(Abstract Method)メソッドを持つ基底クラス「ParentClass」には「metaclass=ABCMeta」でメタクラスであることを宣言し、抽象(Abstract Method)メソッド「child_func」には@abstractmethodデコレーターを設定してます。

この状態で「ParentClass」を継承したサブクラス「ChildClass」を宣言し実行すると

とエラーになります。

これは基底クラスの抽象メソッド(Abstract Method)をサブクラスでオーバーライドしていないためです。

上記のソースにきちんどサブクラスで抽象メソッド(Abstract Method)を宣言し実装すると

とコンパイルが正常に完了し、サブクラスの「child_func()」がコールされています。

まとめ

Python自体にはJavaやC++などの他のオブジェクト指向言語にある「抽象メソッド(Abstract Method)」という言語仕様はありませんが、abcモジュールを利用することで「抽象メソッド(Abstract Method)」を作成することが可能です。

以上、Pythonでabcモジュールを使って抽象クラス、抽象メソッドを作成するでした。

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