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

Jal*_*015 2 python eval class

我是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
Run Code Online (Sandbox Code Playgroud)

但当我打电话给replaceByTwo时,我会收到:

AttributeError: 'trash' object has no attribute 'eval' 
Run Code Online (Sandbox Code Playgroud)

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

Mos*_*oye 5

eval是内置的而不是Python类的默认方法.但你所寻求的是setattr:

def replaceByTwo(self, var_name):
     setattr(self, var_name, 2)
Run Code Online (Sandbox Code Playgroud)

试用:

>>> t = trash()
>>> print(t.var2)
1
>>> t.replaceByTwo('var2')
>>> print(t.var2)
2
Run Code Online (Sandbox Code Playgroud)