3
class Card():
def __init__(self, val):
self.val = val
c = Card(1)
d = -c
d
はCard
オブジェクトであり、d.val
は-1であると予想します。私はそれをどのようにすることができますか?Pythonで単項負(マイナス)演算子をどのようにオーバーロードできますか?
class Card():
def __init__(self, val):
self.val = val
c = Card(1)
d = -c
d
はCard
オブジェクトであり、d.val
は-1であると予想します。私はそれをどのようにすることができますか?Pythonで単項負(マイナス)演算子をどのようにオーバーロードできますか?
Card
の単項マイナス演算子で、値がネゲートされた新しいカードを返すように思えます。
class Card:
def __init__(self, val):
self.val = val
def __neg__(self):
return Card(-self.val)
__neg__
ここで算術演算をカスタマイズするためにオーバーライドできるメソッドのリストに含まれています:https://docs.python.org/3/reference/datamodel.html#emulating-numeric-types
どのようにすることができますそれはあなたが望むなら、あなたはこのようなあなたのクラスの
__neg__
オペレータが定義することができます__neg__などの定義済みの関数をすべて知っていますか? –かなり役に立ちます:) –
これは、数値型をエミュレートするためのPythonのドキュメントに記述されています。あなたが質問した操作は「単項マイナス」です。単項演算は1つのオペランドで動作することを意味します)。https://docs.python.org/2.7/reference/datamodel.html#special-method-names –