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

标签 python string function instance getattr

我想从实例 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/

相关文章:

javascript - 表单提交与使用 ajax 传递数据的按钮 - 一个有效,另一个无效

python - 如何使用 telnetlib 打印 "tar"执行的输出,直到它完成?

将字符串复制到新数组中

python - 按字符数将文本拆分为行

c++ - 使用构造函数的变量

Python:使数组的最后一项成为第一项

python - scipy.optimize.minimize 跟踪目标函数

javascript - phonegap-cordova - javascript,字符串的希伯来语值未正确编码

javascript - 重构 Jquery 函数以使其可重用

sql - 函数 SQL 中的函数