我见过很多人从模块中提取所有类的例子,通常是这样的:
# 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()
这可能是非常明显的事情,但我无法找到任何东西。谁能帮我吗?
尝试这个:
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()需要一个谓词。
inspect.getmembers()