メタプログラミングみたいなことやってると、クラスの判定みたいなことをやりたくなる。

typeとかisinstanceとかは良く見るのですが、class定義なのかどうなのかの判定をしたい場合。

import inspect

# class定義かどうか(これが結構出てこない)
print(inspect.isclass(mod))

# オブジェクトがclassのインスタンスかどうか
print(isinstance(obj, XXX))
print(type(obj) == XXX)

# AがBの子classかどうか
print(issubclass(XXX,XXX))