gpt4 book ai didi

python - 将方法映射到不同对象的列表

转载 作者:行者123 更新时间:2023-11-28 19:58:21 25 4
gpt4 key购买 nike

我想在实例化不同类的对象列表上映射一个方法。所有对象都继承自同一个基类,并定义一个具有所需名称的方法。

为了更清楚地考虑以下代码:

class A:
def __init__(self, x):
self.x = x

def foo (self):
return self.x

class B(A):
def foo (self):
return self.x+1

class C(A):
def foo (self):
return self.x-1

现在考虑实例化类 B 和 C 的对象列表。我想做类似的事情:

result = []
for obj in [B(1), C(1)]:
result.append(obj.foo())

您将如何继续将方法 foo 映射到列表的每个元素?有可能吗?我能想到的最好的是这样的:

map(A.foo, [B(1), C(1)])

但显然它没有返回我想要的结果。如何指定与对象相关的方法?

我希望我说清楚了。

注意:我主要使用 Python2.7,但我同样对适用于“较新”版本的解决方案感兴趣。

最佳答案

Map(A.foo, [B(1), C(1)]) 基本上是在做 A.foo(B(1))A.foo(C(1)) 这不是您要查找的内容。

使用上面的类(class),我会这样做:

In: objs = [B(1), C(1)]
In: [x.foo() for x in objs]
Out: [2, 0]

如果您愿意,Amjith 有一个纯 map 实现。

关于python - 将方法映射到不同对象的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10231419/

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