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

Python - How to call an instance from a given string?

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

foo.bar()

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

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

我想做的是:

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

但它给了我:

AttributeError: 'str' object has no attribute 'bar'

我知道字典可能是一种选择,但这让我不得不写一本很长的字典。

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

getattr(locals()[instance_name], attribute_name)

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