0
我用這條線來獲得在腳本中使用的所有類的腳本中定義:獲取類的列表,
clsmembers = inspect.getmembers(sys.modules[__name__], inspect.isclass)
是否有(普通)的方式來過濾掉所有類,但那些是在腳本內創建的? (我不想要導入的類的名稱。)
簡單地循環遍歷所有元素,並檢查__main__
是imho太醜了。
我用這條線來獲得在腳本中使用的所有類的腳本中定義:獲取類的列表,
clsmembers = inspect.getmembers(sys.modules[__name__], inspect.isclass)
是否有(普通)的方式來過濾掉所有類,但那些是在腳本內創建的? (我不想要導入的類的名稱。)
簡單地循環遍歷所有元素,並檢查__main__
是imho太醜了。
您檢查__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'>)]
工作很好,謝謝:) – tamasgal 2013-03-24 12:33:45