【发布时间】:2013-05-23 17:17:21
【问题描述】:
我正在通过在线 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
【问题讨论】:
标签: python typeerror python-3.3 operand