【Python】AbstractBaseClass(ABC, 抽象規程クラス)かどうかの判定

【Python】AbstractBaseClass(ABC, 抽象規程クラス)かどうかの判定

やりたかったこと

ゆるふわにpytestでテストをしようとしたかったのですが、その過程である__init__.pyに書かれているメソッドを全てテストする。ということをしようとしました。

が、そこで問題となったのがabstractクラスも__init__.pyに含まれていて、こいつをいい感じに省いてやらなければいけなかったのです。

AbstractBaseClassの判定方法

inspect.isabstractを使いましょう。That’s ALL。

まずは適当なクラスを定義してあげます。

本題の判定(+失敗した例です。)

参考

stack overflowさんはやはり偉大でしたが、中々見つからなかったので未来の自分のために残しておきます。

https://stackoverflow.com/questions/14410860/determine-if-a-python-class-is-an-abstract-base-class-or-concrete

 

なお、きちんと公式ドキュメントにもinspect.isabstractの記載がありますが、英語だし見つけにくい…。
まあ中々使わないメソッドですしね、仕方ない。

 

Pyhonカテゴリの最新記事