我知道可以使用
(1) 如果
__add__
方法重载加号,但当我用它来重载+=时,会遇到以下两个问题之一:(1) 如果
__add__
改变了self,则:z = x + y
我不希望 x 在那里被改变,但会发生变异。
(2) 如果 __add__
返回一个新的对象,则
tmp = z
z += x
z += y
tmp += w
return z
在执行z += x
后,由于z
和tmp
指向不同的对象,因此返回的内容将不包含w
。
我可以创建某种形式的.append()
方法,但如果可能的话,我更愿意重载+=
运算符。
__iadd__
或“in-place”加法这个术语的话。 - Bob Stein