如何通过变量传递方法名与参数调用sf对象的方法?
解决方案
要实现动态调用sf对象的指定方法并传递关键字参数,你可以用Python内置的getattr()函数来动态获取方法,再通过字典解包传递参数,具体步骤如下:
定义参数变量
action_cmd = "list_state_machines" # 存储方法名的字符串 payload = {"maxResults": 2} # 关键字参数组成的字典动态获取目标方法
用getattr()从sf对象中取出与action_cmd值匹配的方法:target_method = getattr(sf, action_cmd)调用方法并传递参数
因为payload是关键字参数的字典,调用时用**操作符把字典解包成方法需要的关键字参数:response = target_method(**payload)
原写法失效的原因
sf.action_cmd是直接访问sf对象中名为action_cmd的属性,而非把变量action_cmd存储的字符串作为方法名去查找,自然会找不到对应方法导致报错。getattr()正好解决了“根据字符串动态获取对象方法/属性”的需求。
内容的提问来源于stack exchange,提问作者efultz
相关产品推荐
相关产品推荐

