相关疑难解决方法(0)

覆盖__add__方法后出现TypeError

我试图了解它是如何__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)
Run Code Online (Sandbox Code Playgroud)

如果我把它们放在一个清单中

d=[MyNum(i) for i in range(10)]
Run Code Online (Sandbox Code Playgroud)

这很有效

t=MyNum(0)
for n in d:
    t=t+n
print t
Run Code Online (Sandbox Code Playgroud)

但这不是:

print sum(d)
TypeError: unsupported operand type(s) for +: 'int' and 'instance'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我怎样才能得到sum()

UPDATE

我的问题是如何在支持的对象列表上使用总和__add__,需要尽可能保持通用.

python

35
推荐指数
2
解决办法
3万
查看次数

标签 统计

python ×1