我有一段代码,我希望将三十或四十个不断变化的键/值对转换为一个类下的变量。例如:
for i in dict:
self.i = dict[i]
但当然,每次都会重置self.i。我已经尝试过eval,但你不能用它设置变量,因为它报告'x = 1'作为无效语法。我试过搜索,但我甚至不确定要搜索什么......
谢谢!
答案 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)