我想在实例化不同类的对象列表上映射一个方法。所有对象都继承自同一个基类并定义所需名称的方法。
为了更清楚,请考虑以下代码:
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,但我同样对适用于“较新”版本的解决方案感兴趣。