如何在顶层 python 文件中声明 类
How to get classes declared in the top level python file
是否有一种简单的方法来检索在顶级 python 文件中声明的所有 类?
例如:
import inspect
class FirstClass:
pass
class SecondClass:
pass
if __name__ == '__main__':
print(inspect.getmembers(__name__))
我正在尝试打印 FirstClass 和 SecondClass。
我试过检查模块,但没有成功,如前所示
我试过使用 dir() 但是当它在函数内部被调用时它停止工作。
print(dir())
结果:
['FirstClass', 'SecondClass', 'annotations', 'builtins', 'cached', 'doc', 'file', 'loader', 'name', 'package', 'spec', 'inspect']
该列表包含 类 我正在寻找 for.However 当它在另一个范围内被调用时,如函数,结果是不同的。
def getdir():
print(dir())
它将打印一个空列表
我查看了 post 但是当 __name__
等于 '__main__'
时它并没有解决问题
如何获取 Python 当前模块中所有 类 的列表?(How can I get a list of all classes within current module in 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
,您将在列表中得到它。
是否有一种简单的方法来检索在顶级 python 文件中声明的所有 类?
例如:
import inspect
class FirstClass:
pass
class SecondClass:
pass
if __name__ == '__main__':
print(inspect.getmembers(__name__))
我正在尝试打印 FirstClass 和 SecondClass。
我试过检查模块,但没有成功,如前所示
我试过使用 dir() 但是当它在函数内部被调用时它停止工作。
print(dir())
结果: ['FirstClass', 'SecondClass', 'annotations', 'builtins', 'cached', 'doc', 'file', 'loader', 'name', 'package', 'spec', 'inspect']
该列表包含 类 我正在寻找 for.However 当它在另一个范围内被调用时,如函数,结果是不同的。
def getdir():
print(dir())
它将打印一个空列表
我查看了 post 但是当 __name__
等于 '__main__'
如何获取 Python 当前模块中所有 类 的列表?(How can I get a list of all classes within current module in 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
,您将在列表中得到它。