Переменная класса Python int vs array

Я играл с классами Python и пришел к следующему примеру, в котором две переменные, которые кажутся статическими переменными класса, при изменении изменяют свое поведение.

Что тут происходит? Мой первый инстинкт заключается в том, что со ссылками происходит что-то хитрое.

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)

Ответы на вопрос(1)

Ваш ответ на вопрос