+= и + являются разными. За их поведение отвечают методы __iadd__ и __add__ соответственно.
class A:
def __init__(self, x):
self.x = x
def __iadd__(self, another):
self.x += another.x
return self
def __add__(self, another):
return type(self)(self.x + another.x)
Если
__iadd__ не определён, выражение a += b сводится к простому a = a + b.Обычно разница между
+= и + в том, что первый изменяет объект, а второй создаёт новый:
>>> a = [1, 2, 3]
>>> b = a
>>> a += [4]
>>> a
[1, 2, 3, 4]
>>> b
[1, 2, 3, 4]
>>> a = a + [5]
>>> a
[1, 2, 3, 4, 5]
>>> b
[1, 2, 3, 4]
📲 Мы в MAX
👉@BookPython