将字符串转换为对象实例名称 - python

时间:2011-10-19 21:11:57

标签: python string qt object tree

我可能会错过这个但是......

我正在尝试从SQL数据填充QTreeView - 使用QAbstractItemModel(并且在理解它时遇到很多麻烦)。我遵循的其中一个教程(最简单的)通过简单地调用'Node'的新实例并从列表生成模型来填充Tree。节点有一个名称和一个父节点(如下所示)。您可以在程序中生成数据。这我可以跟随:)

但是,我想从表中提取数据并使用字符串来识别正确的父节点 - 主要是因为如果我在记录上进行迭代,我将无法使用单独的变量命名每个节点(? )。它将用于rec中的x:node = Node(“name”,parentnode)。

当我这样做时,我得到明显的错误消息,即字符串不是正确的对象并且没有方法。有没有办法使用从我的表中派生的字符串来识别正确的“父”对象(或者是否有人指向我为非常热情,但不是必要的有天赋的学习者设计的非常基本的Qtreeview模型教程的方向)

rootNode   = Node("Hips")
childNode0 = TransformNode("RightPirateLeg",        rootNode)
childNode1 = Node("RightPirateLeg_END",    childNode0)
childNode2 = CameraNode("LeftFemur",             rootNode)
childNode3 = Node("LeftTibia",             childNode2)
childNode4 = Node("LeftFoot",              childNode3)
childNode5 = LightNode("LeftFoot_END",          childNode4) 

我意识到在我走到这里之前我可能正在跑步并提前为我的无知而道歉。

1 个答案:

答案 0 :(得分:2)

字符串是全局变量的名称吗?如果是这样,您可以使用globals()['name']访问由全局变量重新调整的值,(当然,将'name'替换为变量的字符串名称。)

或者,更好的是,而不是遍布全局命名空间乱丢变量名称 你可以使用dict

node={}
node['rootNode']=Node('Hips')
node['childNode0']=TransformNode('RightPirateLeg',node['rootNode'])
...

这使得在字符串名称和值之间进行映射变得非常容易。

相关问题