【发布时间】:2021-12-10 08:40:31
【问题描述】:
我需要在运行时将变量“a”添加到全局变量中,并且可以随时从 Item 类中恢复它。结果:在全局变量中看不到。
下面有一个例子。当我打印 globals() 时,我找不到新的“a”变量。
具体来说,我需要能够将 printVal 结果保存在一个名为“a”的变量中,我可以在下次调用此函数时查阅该变量。
在我的最终程序中,我计划添加任意数量的不同变量(变量和值)。
例子:
class Item():
def printVal(self,value):
return value
def func(self):
userInput = input("Input string:")
if userInput!="0":
exec("a=self.printVal(\""+userInput+"\")",globals(),locals())
else:
return
print(globals())
self.func()
if __name__ == "__main__":
item = Item()
item.func()
【问题讨论】:
-
输入到底是什么?只是“一个”?更好的是,制作这个脚本的测试副本,而不是输入一些东西,让 func 取一个值。然后
item.func("whatever the test is")。将input排除在外,您就有了一个具体的示例,而不会增加复杂性。 -
如果您想将
a添加到全局变量中,只需使用global a; a = <foo> -
在这里使用
exec是什么想法?似乎没有意义。 -
这很像 XY 问题。您能否详细说明您想要实现的目标。我怀疑存在一些混乱/缺乏理解如何使用/使用类/OOP。为什么递归调用?也许你只需要一个实例属性?
-
"func" 将充当菜单,用户将输入要调用的变量和函数:例如,他将输入“a
标签: python function eval local-variables globals