从字典键/值对动态设置self.x.

时间:2011-11-26 21:39:54

标签: python

我有一段代码,我希望将三十或四十个不断变化的键/值对转换为一个类下的变量。例如:

for i in dict:
    self.i = dict[i]

但当然,每次都会重置self.i。我已经尝试过eval,但你不能用它设置变量,因为它报告'x = 1'作为无效语法。我试过搜索,但我甚至不确定要搜索什么......

谢谢!

3 个答案:

答案 0 :(得分:3)

要更新类实例,您可以使用

vars(self).update(my_dict)

我怀疑这是你问题的最佳解决方案。你能否提供更多你认为需要的细节?

答案 1 :(得分:3)

这是一种方式。 Sven Marnach是正确的 - 您应该多说一下为什么要这样做。

>>> class Foo(object):
...     def __init__(self, d):
...         for k in d:
...             setattr(self, k, d[k])
... 
>>> f = Foo({'a':'b', 'c':'d'})
>>> f.a
'b'
>>> f.c
'd'

答案 2 :(得分:1)

Python类有一个名为__dict__的内置属性。

你可以像这样使用它:

>>> class Blah(object):
...    pass
>>> x = Blah()
>>> x.__dict__['what'] = 40
>>> x.what

在你的情况下,这样的事情应该有效:

self.__dict__.update(dict)