从字典或列表中设置类实例变量

时间:2014-03-07 12:03:24

标签: python pandas

设置实例变量

我有两个清单:

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 ,但我现在无法弄明白。任何指针。只是使用搜索进入垃圾

2 个答案:

答案 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方法的构造将更容易处理。

[编辑]错字