除了使用之外,有没有办法编写这段代码 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'就是我的选择,因为不会进行任何评估。
答案 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