Подтвердить что ты не робот

Есть ли способ перегрузить + = в python?

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

4b9b3361

Ответ 1

Да. Просто переопределите метод объекта __iadd__, который принимает те же параметры, что и add. Вы можете найти более подробную информацию здесь.