我是Python的新手,我有一个包含很多变量的类,比如:
class trash:
def __init__(self):
self.var1=1
self.var2=1
self.var3=1
...
def replaceByTwo(self, var_name)
self.eval(var_name) = 2
但是当我打电话给replaceByTwo时,我会收到:
AttributeError: 'trash' object has no attribute 'eval'
有谁知道如何解决这个问题? 谢谢!
答案 0 :(得分:5)
eval
是内置的,不是Python类的默认方法。但你所寻求的是setattr
:
def replaceByTwo(self, var_name):
setattr(self, var_name, 2)
试验:
>>> t = trash()
>>> print(t.var2)
1
>>> t.replaceByTwo('var2')
>>> print(t.var2)
2
答案 1 :(得分:4)
您获得的错误是因为您尝试调用self.eval()
,但eval是一个全局函数,而不是您实例的成员。
无论如何你要做什么,例如按名称设置成员/属性,你应该使用setattr()
。