我知道__add__
重写加号的方法,但是当我使用它重写+ =时,我遇到了以下两个问题之一:
(1)如果__add__
自我变异,则
z = x + y
当我真的不希望x在那里突变时,它将使x突变。
(2)如果__add__
返回一个新对象,则
tmp = z
z += x
z += y
tmp += w
return z
z += x
执行z之后,t和z指向不同的对象,将返回不带w的内容。
我可以做出某种.append()
方法,但是+=
如果可能的话,我宁愿重载。
是。只需覆盖对象的__iadd__
方法即可,该方法采用与相同的参数add
。您可以在此处找到更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句