是否有一种简单的方法来检索顶层python文件中声明的所有类?
例如:
import inspect
class FirstClass:
pass
class SecondClass:
pass
if __name__ == '__main__':
print(inspect.getmembers(__name__))
我正在尝试打印FirstClass和SecondClass。
我已经尝试检查模块没有成功,如前所示
我已经尝试过dir(),但是当它在函数中被调用时它会停止工作。
print(dir())
将结果:['FirstClass', 'SecondClass', '注释]', '内置缓存"、">', '医生', '文件', '装载机', '名称包"、">规范"、">', '检查']
列表包含我正在寻找的类。但是,当它在其他作用域(如函数)中调用时,结果就不同了。
def getdir():
print(dir())
它将打印一个空列表
我看过这篇文章,但是当__name__
等于'__main__'
时,它并不能解决问题
我如何获得Python当前模块中所有类的列表?(如何在Python中获得当前模块中所有类的列表?)
你可以使用globals()
来访问你的模块全局变量,并检查只过滤类:
import inspect
class FirstClass:
pass
class SecondClass:
pass
if __name__ == "__main__":
print([obj for obj in globals().values() if inspect.isclass(obj)])
但是要注意,import
导入是全局的,所以如果你添加from gzip import GzipFile
,你会在列表中得到它。