Как правильно выполнять арифметику на экземплярах классов? В приведенном ниже примере класс представляет House
и содержит атрибут n_people
, представляющий количество людей в этом доме.
Цель состоит в том, чтобы получить сумму для экземпляров класса House
и вернуть общее количество людей в домах. Кажется, это работает, когда экземпляры класса House
добавляются вместе:
class House:
def __init__(self, n_people):
self.n_people = n_people
def __add__(self, n_people):
return n_people + self.n_people
House(3) + House(4)
И происходит сбой при суммировании массива House
экземпляров класса:
houses = [House(i) for i in range(10)]
sum(houses)
Полученная ошибка:
TypeError Traceback (most recent call last)
<ipython-input-66-197f26932b89> in <module>
1 houses = [House(i) for i in range(10)]
----> 2 sum(houses)
TypeError: unsupported operand type(s) for +: 'int' and 'House'
Как правильно выполнять арифметику на экземплярах классов в Python?