【Python3】オブジェクト指向プログラミング。抽象基底クラス(ABC)を実装する。

Pythonの抽象基底クラス (Abstract Base Class, ABC)

Pythonでは抽象基底クラス (Abstract Base Class, ABC)を実装することができます。

Python3でも3.4からの機能です。

抽象基底クラスの導入については、PEPの日本語訳をしてくれている人がいます。
こちら→ http://mft.la.coocan.jp/script/python/pep-3119.html

Pythonのドキュメントの抽象基底クラスの説明はこちら→ https://docs.python.jp/3/library/abc.html

「ABCs VS ダックタイピング」という箇所には、
ABC は Python 2 に良い解決策が無かった、たとえばマッピングとシーケンスを見分けるといった問題を解決したいというものとあります。

ABCを使ってみる

$ python abc.py
Traceback (most recent call last):
File "abc.py", line 10, in
A()
TypeError: Can't instantiate abstract class A with abstract methods foo

抽象クラスのAはインタンス化できませんよとエラーが発生します。

@abstractmethodは抽象メソッドを示すデコレータです。

Traceback (most recent call last):
File "abc.py", line 14, in
B()
TypeError: Can't instantiate abstract class B with abstract methods foo

foo()を実装していないクラスBはインスタンス化できないよとエラーが発生します。

$ python abc.py
Python Carnival

registerメソッドで仮想的サブクラスを登録できます。

$ python abc.py
Python3 ABC
無料体験レッスン実施中

こちらも:Pythonでサービスを運用するならこのサーバー


約8,000名の受講生と80社以上の導入実績
プログラミングやWebデザインのオンラインマンツーマンレッスンCodecamp
<Codecampの特徴>
1 現役エンジニアによる指導
2オンラインでのマンツーマン形式の講義
3大手企業にも導入されている実践的なカリキュラム
★★無料体験レッスン実施中です。★★
こちらから

シェアする

  • このエントリーをはてなブックマークに追加

フォローする