我正在通过在线 wikibook 自学 Python,并在其中一个使用重载运算符的示例中遇到了一个令人困惑的错误。根据示例:
class FakeNumber:
n = 5
def __add__(A,B):
return A.n + B.n
c = FakeNumber()
d = FakeNumber()
d.n = 7
c.__imul__ = lambda B: B.n - 6
c *= d
c
应该返回:
1
但我得到:
TypeError: unsupported operand type(s) for *=: 'FakeNumber' and 'FakeNumber'
我知道你不能将对象相乘,那么有什么意义c.__imul__ = lambda B: B.n - 6
呢?是否缺少某些东西,或者哪里有不正确的语法?
参考:http ://en.wikibooks.org/wiki/Python_Programming/Classes#Operator_Overloading