Python新手:使用eval()为self.variable赋值

时间:2016-07-01 23:12:17

标签: python class eval

我是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' 

有谁知道如何解决这个问题? 谢谢!

2 个答案:

答案 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()