eval函数在python中不起作用

2024-06-16 18:29:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下code

tmpVariable = completeVariableName[filedsValueCounter];
tmpValue = fieldsValue[fieldsName[fieldsNameCounter]];
print eval ("'%s = \"%s\";' % (tmpVariable, tmpValue)");

以上代码的输出为:

^{pr2}$

eval函数的下一行是:

print self.name

但它的输出是:

None

问题:我的问题在哪里?在


Tags: 函数代码nameselfevalcodeprintpr2
3条回答

eval用于表达式,但赋值是一个语句。在

但是在这里没有必要使用它。您应该使用setattr。在

如果你想用替换来创建一个类的实例呢。在

像这样:

class Class1:
    pass
class Class2:
    def generateParameters(self):
        self.parameters = ['a', 'b', 'c']
        for i in parameters:
        "self.{0} = class2()".format(i)

其思想是用特定的变量生成大量实例

对于在Python中执行语句(例如问题中的赋值),必须使用exec(),因为eval()只适用于表达式(计算值为值的东西)。无论如何,在这种情况下,您不需要计算字符串,setattr是一种方法:

setattr(self, 'name', 'Peter')

上面这段代码的效果和这段代码的效果一样:

^{pr2}$

相关问题 更多 >