设置实例变量
我有两个清单:
var_names = ['var1', 'var2', 'var3']
var_values = [1, 2, 3]
也可以是dict:
dict = {'var1': 1, 'var2':2, 'var3':3}
我实际上是从熊猫那里得到它们的,但从那里到dict是通用且容易的。
这些实例变量列表具有更改长度,但作为类的实例化的一部分,我想将它们添加到实例变量中。例如。对于上面给出的列表
self.var1 = var_values[0]
self.var2 = var_values[1]
self.var3 = var_values[2]
如果变量名称和值在dict中,则可以使用类似的代码。想想我大约一年前使用过 setattr ,但我现在无法弄明白。任何指针。只是使用搜索进入垃圾
答案 0 :(得分:3)
你正在寻找这个我相信:
self.__dict__.update(zip(var_names,var_values))
您还可以使用itertools.izip
来提高效率(避免创建zip
返回的临时列表)。
答案 1 :(得分:1)
此代码应该在python 3中运行:
class testclass(object):
# constructor
def __init__(self, inputdict):
# iterate through dictionary
for key, value in inputdict.items():
self.__setattr__(key, value)
# usage
test = testclass({'key1': 1})
print(test.key1)
但我不确定为什么你需要这样的东西。您无法确定某个属性是否确实存在。
在我看来,使用内部字典和getter方法的构造将更容易处理。
[编辑]错字