获取Python包中的所有类名
发布时间:2020-12-20 11:33:47 所属栏目:Python 来源:网络整理
导读:我需要获取 Python包中所有类的列表. 起初我得到所有文件名(它工作正常,从stackoverflow获取): from os import listdir,getcwdfrom os.path import isfile,joinmypath = os.getcwd()onlyfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
我需要获取
Python包中所有类的列表.
起初我得到所有文件名(它工作正常,从stackoverflow获取): from os import listdir,getcwd from os.path import isfile,join mypath = os.getcwd() onlyfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ] 然后我检查所有文件,它不能正常工作: for x in onlyfiles: for name,obj in inspect.getmembers(x): if inspect.isclass(obj): print obj 输出是: <type 'str'> .... <type 'str'> 但是,以下代码正常工作: for name,obj in inspect.getmembers(example.py): if inspect.isclass(obj): print obj 你能帮我搞清楚错误是什么吗? 解决方法
inspect.getmembers()处理对象,并传入字符串. Python不知道这些字符串包含文件名,或者将这些文件名视为要导入的模块.
您必须导入inspect.getmembers()的文件才能工作.因为您正在使用当前目录中的文件,所以您应该只能将它们全部导入: import importlib for x in onlyfiles: module = importlib.import_module(x) for name,obj in inspect.getmembers(module): if inspect.isclass(obj): print obj 请注意, for x in onlyfiles: module = importlib.import_module(x) for name,obj in inspect.getmembers(module,inspect.isclass): print obj (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |