我想从实例 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 ... 就像字典 ...
关于Python - 如何从给定的字符串调用实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33380656/