标签: python operator-overloading
我知道覆盖加号的__add__方法,但是当我用它来覆盖+ =时,我最终遇到了两个问题之一:
__add__
(1)如果__add__突变自我,那么
z = x + y
会变异x。
(2)如果__add__返回一个新对象,那么
tmp = z z += x z += y tmp += w return z
将返回没有w的内容,因为执行z += x后z和tmp指向不同的对象。
z += x
我可以制作某种.append()方法,但如果可能,我更愿意重载+=。
.append()
+=
答案 0 :(得分:73)
是。只需覆盖对象的__iadd__方法,该方法采用与add相同的参数。您可以找到更多信息here。
__iadd__
add