获取一个类列表,在一张纸条中定义

2024-03-28 18:59:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用这一行来获取脚本中使用的所有类:

clsmembers = inspect.getmembers(sys.modules[__name__], inspect.isclass)

有没有一种(通用的)方法可以过滤掉脚本中创建的类以外的所有类(我不需要导入的类的名称。)

简单地在所有元素上循环并检查__main__太难看了


Tags: 方法name脚本名称modules元素mainsys
1条回答
网友
1楼 · 发布于 2024-03-28 18:59:19

检查这些类的__module__属性:

clsmembers = [c for c in inspect.getmembers(sys.modules[__name__], inspect.isclass) if c[1].__module__ == __name__]

演示:

>>> import inspect
>>> import sys
>>> class Foo(object): pass
... 
>>> from json import *
>>> inspect.getmembers(sys.modules[__name__], inspect.isclass)
[('Foo', <class '__main__.Foo'>), ('JSONDecoder', <class 'json.decoder.JSONDecoder'>), ('JSONEncoder', <class 'json.encoder.JSONEncoder'>)]
>>> [c for c in inspect.getmembers(sys.modules[__name__], inspect.isclass) if c[1].__module__ == __name__]
[('Foo', <class '__main__.Foo'>)]

相关问题 更多 >