如何获取在顶级python文件中声明的类



是否有一种简单的方法来检索顶层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,你会在列表中得到它。

相关内容

  • 没有找到相关文章

最新更新