【发布时间】:2011-04-15 09:19:51
【问题描述】:
我以前从未处理过反向运算符,所以请不要燃烧!刚完成对它们的了解,所以想尝试一下。但由于某种原因,它不起作用。这是代码:
>>> class Subtract(object):
def __init__(self, number):
self.number = number
def __rsub__(self, other):
return self.number - other.number
>>> x = Subtract(5)
>>> y = Subtract(10)
>>> x - y # FAILS!
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
x - y
TypeError: unsupported operand type(s) for -: 'Subtract' and 'Subtract'
>>> x.__rsub__(y) # WORKS!
-5
如果我将__rsub__ 更改为__sub__,它可以工作。
我做错了什么?还有这些反向运算符的目的是什么?
【问题讨论】: