Python - 如何从给定的字符串中调用实例?

时间:2015-10-28 00:02:26

标签: python string function instance getattr

我想从实例foo调用函数bar(),就像这样:

function forward() {
    Next();
    setTimeout(forward, 1000);
}
function backwards() {
    Back();
    setTimeout(backwards, 1000);
}

但是实例和函数名都来自给定的字符串。我试过getattr,但它只是让我为函数使用一个字符串,而不是实例:

foo.bar()

我想做的是:

strbar = 'bar'    
getattr(foo, strbar)()

但它给了我:

  

属性错误:' str'对象没有属性' bar'

我知道字典可以是一个选项,但这让我写了一个很长的字典。

1 个答案:

答案 0 :(得分:4)

最好的方法是拥有字典或类似的结构。 但是你可以使用邪恶的eval。或者您可以从locals()字典中获取实例:

getattr(locals()[instance_name], attribute_name)

我会考虑重新设计你的代码。必须有更好的解决方案作为eval或locals ......就像字典......