我知道
__add__
方法可以覆盖 plus,但是当我用它来覆盖 += 时,我最终遇到了两个问题之一:
如果
__add__
变异自身,那么
z = x + y
当我真的不希望 x 在那里发生突变时,将会突变 x。
if
__add__
返回一个新对象,则
tmp = z
z += x
z += y
tmp += w
return z
将返回不带 w 的内容,因为执行
z += x
后 z 和 tmp 指向不同的对象。
我可以制作某种
.append()
方法,但如果可能的话,我更愿意重载 +=
。