我想从给定的字符串动态加载一个类。但是,我不知道该类将在哪个文件中,所以我必须搜索所有文件。我已经尝试过了,但AttributeError: 'module' object has no attribute 'MyClass'
即使我 100% 确定该模块(在当前迭代中)具有该类,我也得到了:
target = 'MyClass'
module_names = [mf[0:-3] for mf in os.listdir('application/models') if mf.endswith(".py")]
modules = [imp.new_module(x) for x in module_names]
for module in modules:
try:
target_class = getattr(module, target)
except ImportError, AttributeError:
continue
if target_class:
print 'found class'
看来我真的很接近了。我想要的不是将搜索限制在一个文件夹中,而可能是多个文件夹。我的代码有什么问题?
编辑:好的,现在我正在尝试这样的事情,但仍然遇到同样的错误:
for m in module_names:
try:
x = reload(__import__(m))
target_class = getattr(x, target)
except ImportError, AttributeError:
continue
else:
break
if target_class:
print 'found class'