Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Ich verstehe nicht warum bei folgendem code list[1].vari eine Kopie von list[0].vari zu sein scheint?! IMO sollte list[1].vari als [] initialisiert sein.
Das hat damit zu tun, dass die defaultwerte von Funktionen (und daher auch der Methoden) nur einmal ausgewertet werden und man immer dasselbe Objekt übergeben bekommt. Listen sind mutable und daher arbeitest du immer auf der gleichen Liste.
@matthias11: Das hat nichts mit Klassen zu tun, sondern wann Defaultargumente von Funktionen ausgewertet. Das passiert *einmal* wenn die ``def``-Anweisung ausgeführt wird. Das Ergebnis davon merkt sich das Funktionsobjekt und bei jedem Aufruf wird das gemerkte Objekt an den Namen gebunden (wenn kein Argument dafür übergeben wurde). Darum hast Du da nur eine Liste die bei jedem Exemplar der Klasse und bei jedem Aufruf der Funktion das selbe Objekt ist.
Darum sind veränderbare Objekte als Defaultargumente keine gute Idee. Es sei denn man will das Verhalten ausnutzen.
Üblicherweise belegt man solche Defaultargumente mit `None` und testet das in der Funktion.