1
私は新しいモジュラス7クラスを定義しました:クラス間の追加は第2引数のクラスによって評価できますか?
class mod7:
def __init__(self, n):
self.val = n % 7
def __repr__(self):
return str(self.val)
In [2]: a = mod7(18)
In [3]: a
Out[3]: 4
その後、私はちょうどMOD7ていないオブジェクトの追加を可能にしたかっただけでなく、新しいクラスの整数の。追加機能は第一引数のクラスによって呼び出された - なぜだから私はしかし
In [13]: 5 + a
Traceback (most recent call last):
File "<ipython-input-13-14fd8adcbf4d>", line 1, in <module>
5+a
TypeError: unsupported operand type(s) for +: 'int' and 'mod7'
を
def __add__(self, other):
if type(other) is int:
return mod7(self.val + other)
if type(other) is mod7:
return mod7(self.val + other.val)
と
In [11]: a + mod7(5)
Out[11]: 2
In [12]: a + 5
Out[12]: 2
を追加しましたクラスの下に私は理解しています。私の質問:a
の2番目の引数のクラスに従って5 + a
を上書きする方法はありますか?
あなたのクラスに '__radd__'メソッドを追加することができます。しかしながら、通常、モジュラスは通常オペレータ上で定義されることに留意すべきである。それ以外の場合は、結果に第1引数または第2引数の係数があるはずですか? –
@JaredGoguen - "演算子のモジュラスを定義する"とはどういう意味ですか?それはクラスで実装できますか? – Aguy
(5%7)+(7%8)とは何ですか? 5(+%4)6 = 11%4 = 3のような方が理にかなっています。 –