Скажем, у нас есть класс AverageNumber, который при добавлении находит среднее значение добавляемых чисел:
class AverageNumber():
def __init__(self, value):
self.value = value
def __add__(self, other):
average = ( self.value + other.value ) / 2 # This is the issue?
return AverageNumber(average)
def __str__(self):
return self.value
Этот код неверен, так как не учитывает аддитивные коммутативные и ассоциативные свойства, которые яищет, а именно:
среднее (1 + 3 + 2) = среднее (1 + 2 + 3) и т. д.
Однако этого не происходит, так как вышеприведенный класс добавляет два ввремя.НЕПРАВИЛЬНЫЕ результаты приведены ниже:
>>> b = AverageNumber(1) + AverageNumber(3) + AverageNumber(2)
>>> b.value
2.0
>>> b = AverageNumber(1) + AverageNumber(2) + AverageNumber(3)
>>> b.value
2.25
Мой вопрос: как я могу изменить приведенный выше код для устранения этой проблемы?