我知道要重写plus的__add__
方法,但是当我使用它重写+=时,我会遇到以下两个问题之一:
(1)如果__add__
发生自我突变,那么
z = x + y
当我不想让x在那里变异的时候,会变异x。
(2)如果__add__
返回一个新对象,则
tmp = z
z += x
z += y
tmp += w
return z
将返回没有w的内容,因为z和tmp在执行z += x
后指向不同的对象。
我可以做一些.append()
方法,但如果可能的话,我宁愿重载+=
。
Tags:
是的。只需重写对象的
__iadd__
方法,该方法使用与add
相同的参数。您可以找到更多信息here。相关问题 更多 >
编程相关推荐