モジュールからすべてのクラスを抽出する例をたくさん見てきましたが、通常は次のようなものです。
# 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()
述語を取るからです。