-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