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 ...就像字典一样...
我想从实例 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 ...就像字典一样...