将字符串转换为对象实例名称 - python
我可能走错了方向,但我还是想说说...
我正在尝试从SQL数据填充一个QTreeView,使用的是QAbstractItemModel(说实话,我对这个东西理解得很困难)。我在跟着的一个教程(最简单的那个)是通过简单地创建'节点'的新实例,然后从列表生成模型来填充树形结构。这个节点有一个名字和一个父节点(如下所示)。这样做在程序内部生成数据是可以的,我大致能跟上这个思路 :)
但是,我想从表格中导入数据,并使用一个字符串来识别正确的父节点——主要是因为如果我在遍历记录时,就不能用单独的变量给每个节点命名(?)。我会这样写:for x in recs: 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 个回答
2
这些字符串是全局变量的名字吗?如果是的话,你可以用 globals()['name']
来获取这个全局变量的值,(当然要把 'name'
替换成你想要的变量名的字符串)。
或者,更好的办法是,不要到处乱放变量名在全局命名空间里,你可以使用一个 dict
(字典):
node={}
node['rootNode']=Node('Hips')
node['childNode0']=TransformNode('RightPirateLeg',node['rootNode'])
...
这样可以很方便地将字符串名字和对应的值进行关联。