Обычно, когда вы пытаетесь установить атрибут класса с помощью экземпляра, вы создаете атрибут объекта, который затеняет атрибут класса. Например, если вы сделаете следующее:
def add(self, value):
self.a_variable = value
Вы получите:
a.print()
напечатает 1
b.print()
напечатает []
Используя .append()
, вы получаете ссылку на атрибут класса (то есть Test.a_variable
) и мутируете его. Вот почему это отражается на всех экземплярах класса.