Python で現在のモジュール内のすべてのクラスのリストを取得するにはどうすればいいですか? 質問する

Python で現在のモジュール内のすべてのクラスのリストを取得するにはどうすればいいですか? 質問する

モジュールからすべてのクラスを抽出する例をたくさん見てきましたが、通常は次のようなものです。

# foo.py
class Foo:
    pass

# test.py
import inspect
import foo

for name, obj in inspect.getmembers(foo):
    if inspect.isclass(obj):
        print obj

素晴らしい。

しかし、現在のモジュールからすべてのクラスを取得する方法がわかりません。

# foo.py
import inspect

class Foo:
    pass

def print_classes():
    for name, obj in inspect.getmembers(???): # what do I do here?
        if inspect.isclass(obj):
            print obj

# test.py
import foo

foo.print_classes()

これはおそらく非常に明白なことなのですが、私は何も見つけることができませんでした。誰か助けてくれませんか?

ベストアンサー1

これを試して:

import sys
current_module = sys.modules[__name__]

あなたのコンテキストでは:

import sys, inspect
def print_classes():
    for name, obj in inspect.getmembers(sys.modules[__name__]):
        if inspect.isclass(obj):
            print(obj)

さらに良い点は:

clsmembers = inspect.getmembers(sys.modules[__name__], inspect.isclass)

inspect.getmembers()述語を取るからです。

おすすめ記事