我的试验如下,但没有用。
class MyNum:
def __init__(self , n):
self.n = n
class MyNum2(MyNum):
def __coerce__(self , y):
return self, y
def __radd__(self, y):
print 'radd called'
return self.n + y.n
我输入了python命令行:
>>> x = MyNum(20)
>>> y = MyNum2(12)
>>> x+y
结果:
>>> Traceback (most recent call last): File "", line 1, in y+x File "", line 3, in __coerce__ return self.y AttributeError: MyNum instance has no attribute 'y'
当我使用__coerce__()
方法而不使用类派生时,结果为
x+y
等于radd called // 32
。但是,对于derived-class,会发生错误。
请给我一些帮助,祝新年快乐,请提前谢谢。
答案 0 :(得分:1)
根据错误消息,您的__coerce__
实施实际上已经
return self.y
而不是
return self,y
正如您在示例代码中所写的那样。
上面的代码对我有用,而你实际上甚至不需要__coerce__
方法。只需拥有__radd__
即可。