是否可以在代码内部直接将字符串的值用作类等?我不知道确切地描述我想用单词做什么,因此伪代码版本可能是理解问题所在的最佳方法。这是示例:for node in itemdict.iterkeys(): nodeinfo = itemdict.get(node) if nodeinfo[4] == "node": #create new Links based on original nodeclass #Example if nodeinfo[1] == "Dot" #link = nuke.nodes.Dot(hide_input=nodeinfo[3], label='to: ' + nodeinfo[2]) link = nuke.nodes.XXX_value of nodeinfo[1] here_XX(hide_input=nodeinfo[3], label='to: ' + nodeinfo[2])
2 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
您想使用getattr内置函数按名称从对象获取属性:
for node in itemdict.iterkeys():
nodeinfo = itemdict.get(node)
if nodeinfo[4] == "node": #create new Links based on original nodeclass
# Get the attribute named <the value of nodeinfo[1]> from nuke.nodes
cls = getattr(nuke.nodes, nodeinfo[1])
link = cls(hide_input=nodeinfo[3], label='to: ' + nodeinfo[2])
如果对象不具有传递给您的名称的属性getattr,AttributeError则将引发。您可以在代码中处理此错误getattr,也getattr可以将第三个参数传递给,该参数将返回而不是raise AttributeError。
添加回答
举报
0/150
提交
取消