Название не очень понятно, но я постараюсь объяснить.
Имея этот класс:
class Wrapped(object):
def method_a(self):
# do some operations
return n
def method_b(self):
# also do some operations
return n
Я хочу иметь класс, который работает так же, как этот:
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
Очевидно, что это не настоящая проблемапод рукой (это не только два метода), и этот код также неполон (включен только минимум для объяснения проблемы).
Итак, я ищу способ получить такое поведение.То есть, какой бы метод не вызывался в классе-обертке, вызовите этот метод для всех объектов класса Wrapped и верните среднее значение их результатов.
Можно ли это сделать?Как?
Заранее спасибо.
Редактировать
Спасибо за ответы ... увидев решение, все кажется очевидным :) Я выбрал АлексаОтвет Мартелли, потому что он хорошо объяснил решение.Другие ответы также полезны, поэтому я также проголосовал за них.