To define a class behaviour in the following statement:
my_object[item] = ...
I know I need to define the __setitem__
method.
What method do I need to define for the following statement:
my_object[item] += ...
To define a class behaviour in the following statement:
my_object[item] = ...
I know I need to define the __setitem__
method.
What method do I need to define for the following statement:
my_object[item] += ...
my_object
needs __getitem__
to retrieve the initial value of my_object[item]
and __setitem__
to set the new value.
Additionally, Python needs a way to perform the addition. Either my_object[item]
needs to implement the addition with __add__
or __iadd__
, or the object on the right side of the +=
needs to implement __radd__
.
__setitem__
will cover you with regard to your container class; it's called when you do any augmented assignment just as with regular assignment. As far as your class can tell, there's no difference between x[i] += 1
and x[i] = x[i] + 1
.
If you need to treat +=
differently from =
or from -=
, that's handled by the special methods of the item's class.