Pythonでモジュールに定義されているクラス一覧を取得する

Pythonでモジュールに定義されているクラス一覧を取得するには、inspectモジュールを使用します。以下は、inspectモジュールを使って、モジュール内のクラスをリストアップする方法の例です。

import inspect
import my_module  # モジュール名を適宜変更する

classes = []
for name, obj in inspect.getmembers(my_module):
    if inspect.isclass(obj):
        classes.append(name)

print(classes)

上記のコードでは、my_moduleというモジュール内のクラス一覧を取得しています。inspect.getmembers()関数を使用することで、モジュール内で定義されているすべての名前とオブジェクトを取得できます。そして、inspect.isclass()関数を使用して、オブジェクトがクラスであるかどうかを判定しています。クラスであれば、その名前をリストに追加しています。

インタラクティブモードで実行した結果がこちら。

# python
Python 3.9.2 (default, Mar 12 2021, 04:06:34) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import inspect
>>> import pcf8574
>>> classes = []
>>> for name, obj in inspect.getmembers(pcf8574):
...     if inspect.isclass(obj):
...         classes.append(name)
... 
>>> print(classes)
['IOPort', 'PCF8574']

このようにして、モジュール内のクラスをリストアップすることができます。なお、上記のコードではクラス名だけをリストアップしていますが、必要に応じてクラスオブジェクトそのものをリストアップすることも可能です。