Python exec()无法正常工作

时间:2016-05-11 03:36:20

标签: python exec

为什么我没有定义'自我'?此代码位于类中的函数下。 main_root应该可以在类中的任何地方访问,因为它在___init____下初始化为self.main_root =一个元素。函数的第一个参数也是'self'。

root_string = "self.main_root[0][1]"

globals()
code_locals = {'temp_string':""}

command_string = "temp_string = str(" + root_string + ".tag) + str(" + root_string + ".attrib)"
exec(command_string,globals(),code_locals)

如果我设置root_string = "main_root[0][1]",那么我将得到main_root未定义。即使我尝试事先指定main_root = copy.deepcopy(self.main_root)

2 个答案:

答案 0 :(得分:1)

如果您需要在self语句中访问exec变量,则应在样本中使用locals()而不是code_locals传递第三个参数。

答案 1 :(得分:0)

应该是

root_string =self.main_root[0][1]

或者如果你想要它作为字符串,请将其作为

root_string = str(self.root[0][1])

你必须将变量转换为type(string,int等),你希望你不能将它初始化为“self.main_root [0] [1]”