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