plus をオーバーライドする方法については知ってい__add__
ますが、それを使用して += をオーバーライドすると、次の 2 つの問題のいずれかが発生します。
(1)__add__
自分自身を変異させた場合
z = x + y
x をそこで変異させたくない場合は、x を変異させます。
(2)__add__
新しいオブジェクトを返す場合、
tmp = z
z += x
z += y
tmp += w
return z
の実行後に z と tmp が別のオブジェクトを指しているため、 w なしで何かを返しますz += x
。
ある種のメソッドを作成できますが、可能であれば.append()
オーバーロードしたいと思います。+=