-1
我的试用如下所示,但它不起作用。对派生类调用__coerce __()方法会导致错误
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
。但是,使用派生类会发生错误。
请给我一些帮助,并祝大家农历新年快乐,提前谢谢。
我做了这些实验代码。这是我第一次使用\ __ coerce__方法作为操作符重写。无论如何,谢谢你(^ - ^),你是对的。我的代码唯一的问题是','! – shinavro 2011-02-05 07:14:12