在python3中动态创建/调用变量

时间:2011-01-20 05:54:56

标签: python-3.x

大家好,有更好的方法来动态创建/调用变量,我正在尝试创建一个结构解析器,它将读取块中的对象数据,并在发现它们时动态创建这些对象。

这是我当前方法的一个例子,但感觉我错了。

>>> VAR="VAR2"
>>> class item():
...     pass
... 
>>> newitem=item()
>>> exec('newitem.'+VAR+'=\''+'hello'+'\'')
>>> newitem.VAR2
'hello'
>>> 

2 个答案:

答案 0 :(得分:4)

我认为你是在动态创建变量的正确轨道,虽然我会质疑你为什么不使用hashmap。为什么不

newitem = {}
newitem[VAR] = 'hello'

尝试尽可能远离eval语句,因为你必须调整“python注入”。 VAR可能包含可能导致无效代码的“'”。在可能的情况下使用常规Python构造要容易得多

答案 1 :(得分:3)

使用setattr

setattr(object, attribute_name, value)

因此,例如,setattr(a, "pancakes", "syrup")(或多或少)与a.pancakes = "syrup"相同

因此,您可以使用setattr(newitem, VAR, "hello")使newitem.VAR2成为“你好”。