Я знаю о методе __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()
метод, но я бы предпочел перегрузить +=
, если это возможно.