gpt4 book ai didi

python - 选择要使用的实例方法

转载 作者:太空宇宙 更新时间:2023-11-04 08:48:58 25 4
gpt4 key购买 nike

我写了一些代码,它接受一堆对象,在每个对象上使用一个实例方法,并将实例方法返回的值放在一个列表中。

object_list # list of objects
value_list = [object.method() for obj in object_list]

我的代码中很多不同的地方都需要这个结构,它们之间的唯一区别是实例方法 method 总是不同的。

用一个mapping approach as explained here就没问题了如果方法是函数。可以用 exec 完成类似的事情,但是它不是很优雅,而且我不确定它在返回值方面如何工作:

def call_method(obj, method_name: str):
return exec("obj." + method_name + "()") # returns None

有没有一种优雅的方法来重构这个问题的代码?

最佳答案

从最好到最坏,这些选项有效:

getattr(obj, method_name)()
operator.methodcaller(method_name)(obj) # needs import operator
eval("obj." + method_name + "()")

第二个版本也可以这样使用:

value_list = list(map(operator.methodcaller(method_name), object_list))

关于python - 选择要使用的实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37416888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com