Code: Alles auswählen
class A:
a = 1
A_Object = A()
Y = A_Object
Y.a = 2
Code: Alles auswählen
class A:
a = 1
A_Object = A()
Y = A_Object
Y.a = 2
Code: Alles auswählen
A_Object is Y
Nein. Die Semantik von `=` ist eine andere als du denkst: Es werden _nie_ Kopien angefertigt, sondern die Objekte auf der rechten Seite werden an den Namen auf der linken Seite gebunden.Lasse hat geschrieben:Soweit ich weiß hat dieses Verhalten etwas mit Speichersparen und das Python Objekte dann gerne zusammenlegt zu tun.
Code: Alles auswählen
In [2]: class A:
...: a = []
...:
In [3]: a = A(); b = A(); c = A()
In [4]: a.a = a.a + [1,2]; b.a.extend([3,4]) ; c.a += [5,6]
In [5]: a.a, b.a, c.a, A.a
Out[5]: ([1, 2], [3, 4, 5, 6], [3, 4, 5, 6], [3, 4, 5, 6])