Le titre n'est pas très clair mais je vais essayer d'expliquer.python, classe d'emballage retournant la moyenne des membres enveloppés
Ayant cette classe:
class Wrapped(object):
def method_a(self):
# do some operations
return n
def method_b(self):
# also do some operations
return n
Je veux avoir une classe qui fonctionne de la même manière que celui-ci:
class Wrapper(object):
def __init__(self):
self.ws = [Wrapped(1),Wrapped(2),Wrapped(3)]
def method_a(self):
results=[Wrapped.method_a(w) for w in self.ws]
sum_ = sum(results,0.0)
average = sum_/len(self.ws)
return average
def method_b(self):
results=[Wrapped.method_b(w) for w in self.ws]
sum_ = sum(results,0.0)
average = sum_/len(self.ws)
return average
Il est évident que ce n'est pas le problème réel à portée de main (il est seulement deux méthodes), et ce code est également incomplet (seulement inclus le minimum pour expliquer le problème). Donc, ce que je cherche est un moyen d'obtenir ce comportement. Signification, quelle que soit la méthode appelée dans la classe wrapper, appelez cette méthode pour tous les objets de la classe Wrapped et renvoyez la moyenne de leurs résultats.
Cela peut-il être fait? Comment?
Merci d'avance.
Modifier
Merci pour les réponses ... après les avoir vus la solution tout semble évident :) J'ai choisi la réponse d'Alex Martelli, car il a bien expliqué la solution. Les autres réponses sont aussi utiles, c'est pourquoi j'ai aussi voté pour eux.