Warum verhält sich + = in Listen unerwartet?

Das+= Der Operator in Python scheint unerwartet mit Listen zu arbeiten. Kann mir jemand sagen, was hier los ist?

class foo:  
     bar = []
     def __init__(self,x):
         self.bar += [x]


class foo2:
     bar = []
     def __init__(self,x):
          self.bar = self.bar + [x]

f = foo(1)
g = foo(2)
print f.bar
print g.bar 

f.bar += [3]
print f.bar
print g.bar

f.bar = f.bar + [4]
print f.bar
print g.bar

f = foo2(1)
g = foo2(2)
print f.bar 
print g.bar 

AUSGABE

[1, 2]
[1, 2]
[1, 2, 3]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3]
[1]
[2]

foo += bar scheint jede Instanz der Klasse zu betreffen, wohingegenfoo = foo + bar scheint sich so zu verhalten, wie ich es erwarten würde.

Das+= operator wird als "zusammengesetzter Zuweisungsoperator" bezeichnet.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage