my_object[item] = ...
私は__setitem__
メソッドを定義する必要があります知っています。
:
my_object[item] += ...
my_object[item] = ...
私は__setitem__
メソッドを定義する必要があります知っています。
:
my_object[item] += ...
my_object
は、新しい値を設定するためにmy_object[item]
と__setitem__
の初期値を取得するためには、__getitem__
が必要です。
さらに、Pythonは追加を実行する方法が必要です。 my_object[item]
は、__add__
または__iadd__
で追加を実装する必要があります。または、+=
の右側のオブジェクトは__radd__
を実装する必要があります。
__setitem__
あなたのコンテナクラスに関連して、あなたをカバーします。通常の割り当てと同じように拡張割り当てを行うと呼び出されます。あなたのクラスが教える限り、x[i] += 1
とx[i] = x[i] + 1
の間に違いはありません。
あなたが=
または-=
は異なる+=
を処理する必要がある場合は、そのは項目のクラスの特殊な方法で処理されます。
あなたは私が信じている '__iadd__'を探しています。 – idjaw
質問に答えました[前](http://stackoverflow.com/questions/1047021/overriding-in-python-iadd-method) – Hang
「__isetitem__」のようなものはありません。 'my_object [...]'では '__setitem__'と' __getitem__'を定義できますが、 'my_object [item] + = ...'は 'my_object [item] = my_object [item] +と異なります。 'my_object [item]'がインスタンスであるクラスを変更する必要があります。 – zondo