评估对象的字符串并更改/赋值

时间:2014-03-24 17:16:19

标签: python string oop object evaluate

除了使用之外,有没有办法编写这段代码  exec来评估代码?手册中有没有我遗漏的东西?

Class Object():

    def __init__(self):
        self.a = 200
        self.y = 400

list = [
'o.x',
'o.y',
'o.z'
]

o = Object()

for item in list:
    exec(item + ' = 1000')

我梦想中真正想要的是:

for item in list:
    item = 1000

但由于显而易见的原因,'exec'就是我的选择,因为不会进行任何评估。

1 个答案:

答案 0 :(得分:3)

使用setattr()按字符串设置实例属性的值:

>>> class A():
...     def __init__(self):
...         self.a = 200
...         self.y = 400
... 
>>> a = A()
>>> l = ['x', 'y', 'z']
>>> for item in l:
...     setattr(a, item, 1000)
... 
>>> a.x
1000
>>> a.y
1000
>>> a.z
1000