我遇到了一个与这里引用的类似的问题-Dynamic Method Call In Python 2.7 using strings of method names
下面是我的工作方法调用的示例,最后的方法基于给定的数据类型,在本例中.string_value
:
tag.fields[field["key"]].string_value = field["value"]
但是,我不会总是只分配字符串,因为还有用于其他数据类型的方法。我尝试了一个类似于链接线程中引用的解决方案:
typer = getattr(datacatalog_v1.types.TagField, f"{field['type']}_value")
tag.fields[field["key"]].typer = field["value"]
typer
是我的新动态方法调用,但它不起作用。我收到这个错误-'TagField' object has no attribute 'typer'
有什么建议吗
这很有趣。我不确定您使用的是什么包/数据类型,但是看起来您有两个问题
首先,getattr返回一个字符串,不能调用字符串,例如“python”()
第二,如果在getattr()之后删除(),typer将是一个字符串数据,您不能这样使用它。在
typer必须是某种类型的方法/属性,而不是字符串。最好的方法是构建if语句或dict,将不同的typer值与不同的方法/属性调用结合起来
更新:
有一个setattr(对象、名称、值)函数
相关问题 更多 >
编程相关推荐