起初我得到所有文件名(它工作正常,从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)) ]
然后我检查所有文件,它不能正常工作:
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 importlibfor x in onlyfiles: module = importlib.import_module(x) for name,obj in inspect.getmembers(module): if inspect.isclass(obj): print obj
请注意,inspect.getmembers()
接受第二个参数,该谓词允许您过滤方法返回的内容.您可以在这里使用inspect.isclass()作为谓词,而不是手动过滤:
for x in onlyfiles: module = importlib.import_module(x) for name,obj in inspect.getmembers(module,inspect.isclass): print obj总结
以上是内存溢出为你收集整理的获取Python包中的所有类名全部内容,希望文章能够帮你解决获取Python包中的所有类名所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)