我想将一个方法映射到实例化不同类的对象列表上。所有对象都从同一个基类继承,并定义所需名称的方法。将方法映射到不同对象的列表
为了更清楚地考虑下面的代码:
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)])
但显然它不会返回我想要的结果。我如何指定与对象相关的方法?
我希望我明确自己。
NB:我主要使用Python2.7,但我同样会对“新版本”有效的解决方案感兴趣。
你错过调用A的__init__形式B和C,__init__是不隐含地称呼。 – loki 2012-04-19 15:41:08