我想將一個方法映射到實例化不同類的對象列表上。所有對象都從同一個基類繼承,並定義所需名稱的方法。將方法映射到不同對象的列表
爲了更清楚地考慮下面的代碼:
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