Я пытаюсь понять, как работает __add__
:
class MyNum:
def __init__(self,num):
self.num=num
def __add__(self,other):
return MyNum(self.num+other.num)
def __str__(self):
return str(self.num)
Если я поместил их в список
d=[MyNum(i) for i in range(10)]
это работает
t=MyNum(0)
for n in d:
t=t+n
print t
Но это не так:
print sum(d)
TypeError: unsupported operand type(s) for +: 'int' and 'instance'
Что я делаю неправильно? Как я могу заставить sum() работать?
UPDATE
Моя проблема заключается в том, как использовать сумму в списке объектов, поддерживающих __add__
, необходимо сохранить ее как можно более общую.