我搜索过高低,无法找到合适的解决方案。
我需要使用来自不同文件中的类的for循环动态创建对象并将它们存储在字典中。
为避免名称空间污染,我喜欢导入我的模块:
from my_folder import my_file as mf
循环看起来像这样:
self.my_dict = {} # create empty dictionary
for F in ('One', 'Two', 'Three', ...):
object = F(var1, var2)
self.my_dict[F] = object
第object = F(var1, var2)
行上的我需要F
引用mf.One
,
mf.Two
等等。
如何将值F
附加到mf
,以便将其标记为mf.value-of-F
,而不是将其读作mf.F
?
我知道我必须遗漏一些非常明显的东西,现在对我来说并不明显。 感谢
答案 0 :(得分:1)
尝试使用这样的语法:
object = mf.__dict__[F](var1, var2)
答案 1 :(得分:1)
对你的问题几乎肯定会有更好的解决方案,但你的例子很短,设计很难给出好的建议。
要解决您提出的具体问题,您可以使用getattr
根据字符串从模块中获取函数或类:
for F in ('One', 'Two', 'Three', ...):
Cls = getattr(mf, F)
obj = Cls(var1, var2)
self.my_dict[F] = obj
更简单的方法可能是迭代类本身:
for F in (mf.One, mf.Two, mf.Three):
obj = F(var1, var2)
...