获取脚本中定义的类列表

时间:2013-03-24 12:19:16

标签: python class

我正在使用此行来获取脚本中使用的所有类:

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

是否有一种(常见的)方法可以过滤掉除脚本中创建的所有类? (我不想要导入的类的名称。)

简单地循环遍历所有元素并检查__main__是非常难看的。

1 个答案:

答案 0 :(得分:1)

您检查这些类的__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'>)]