私の試行は以下のようでしたが、うまくいきませんでした。
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
結果:
>>> トレースバック (最新の呼び出しが最後): ファイル ""、1 行目、 y+x ファイル ""、3 行目、__coerce__ 内 self.y を返す AttributeError: MyNum インスタンスに属性 'y' がありません
__coerce__()
クラスを派生させずにメソッド
を使用すると、 の結果は にx+y
等しくなりradd called // 32
ます。ただし、派生クラスではエラーが発生します。
助けてください。旧正月、よろしくお願いします。