猿问

如何获取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()

这可能确实很明显,但是我什么也找不到。谁能帮我吗?


大话西游666
浏览 2343回答 3
3回答

慕桂英3389331

尝试这个:import syscurrent_module = sys.modules[__name__]在您的情况下:import sys, inspectdef 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()带谓语。
随时随地看视频慕课网APP

相关分类

Python
我要回答