是否可以在代码中直接使用字符串的值作为类等?我不知道确切地描述我想要对单词做什么,所以伪代码版本可能是理解问题的最好方法。示例如下:
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])
发布于 2018-07-01 14:23:50
您希望使用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
将返回该参数,而不是引发AttributeError
。
发布于 2018-07-01 07:58:10
如果您想通过名称获取类,可以使用内置函数globals
来获取它。
例如:
class A(object):
def __init__(self):
self.number = 1
class B(object):
def __init__(self):
self.number = 2
for name in 'A', 'B':
print(globals()[name]().number)
这将输出以下内容:
1
2
https://stackoverflow.com/questions/51119348
复制相似问题