Python-Klassenvariable int vs array
Ich habe mit Python-Klassen herumgespielt und bin zu dem folgenden Beispiel gekommen, in dem zwei Variablen, die statische Klassenvariablen zu sein scheinen, ein unterschiedliches Verhalten aufweisen, wenn sie geändert werden.
Was ist denn hier los? Mein erster Instinkt ist, dass mit Referenzen etwas heikles los ist.
class Foo:
a = []
n = 0
def bar(self):
self.a.append('foo')
self.n += 1
x = Foo()
print x.a, x.n ([] 0)
x.bar()
print x.a, x.n (['foo', 1])
y = Foo()
print y.a, y.n (['foo', 0])
y.bar()
print y.a, y.n (['foo', 'foo'], 1)