大家好,有更好的方法来动态创建/调用变量,我正在尝试创建一个结构解析器,它将读取块中的对象数据,并在发现它们时动态创建这些对象。
这是我当前方法的一个例子,但感觉我错了。
>>> VAR="VAR2"
>>> class item():
... pass
...
>>> newitem=item()
>>> exec('newitem.'+VAR+'=\''+'hello'+'\'')
>>> newitem.VAR2
'hello'
>>>
答案 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
成为“你好”。