首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python使用字符串值作为类/部分代码

Python使用字符串值作为类/部分代码
EN

Stack Overflow用户
提问于 2018-07-01 07:38:17
回答 2查看 75关注 0票数 0

是否可以在代码中直接使用字符串的值作为类等?我不知道确切地描述我想要对单词做什么,所以伪代码版本可能是理解问题的最好方法。示例如下:

代码语言:javascript
复制
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])
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-01 14:23:50

您希望使用getattr内置函数按名称从对象获取属性:

代码语言:javascript
复制
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。您可以在代码中处理此错误,也可以将第三个参数传递给getattrgetattr将返回该参数,而不是引发AttributeError

票数 1
EN

Stack Overflow用户

发布于 2018-07-01 07:58:10

如果您想通过名称获取类,可以使用内置函数globals来获取它。

例如:

代码语言:javascript
复制
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)

这将输出以下内容:

代码语言:javascript
复制
1
2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51119348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档