我想从实例foo调用函数bar(),就像这样:
function forward() {
Next();
setTimeout(forward, 1000);
}
function backwards() {
Back();
setTimeout(backwards, 1000);
}
但是实例和函数名都来自给定的字符串。我试过getattr,但它只是让我为函数使用一个字符串,而不是实例:
foo.bar()
我想做的是:
strbar = 'bar'
getattr(foo, strbar)()
但它给了我:
属性错误:' str'对象没有属性' bar'
我知道字典可以是一个选项,但这让我写了一个很长的字典。
答案 0 :(得分:4)
最好的方法是拥有字典或类似的结构。
但是你可以使用邪恶的eval
。或者您可以从locals()
字典中获取实例:
getattr(locals()[instance_name], attribute_name)
我会考虑重新设计你的代码。必须有更好的解决方案作为eval或locals ......就像字典......