ich bin auf folgendes "Problem" gestoßen (ich verstehe einfach das "Warum" nicht und wie man hier arbeitet). Man nehme folgende Situation:
Code: Alles auswählen
a = 7
b = a
b = 99
print(a)
print(b)
Code: Alles auswählen
7
99
Nun wandle ich das Szenario um:
Code: Alles auswählen
class Test:
def __init__(self, a):
self.__a = a
def getA(self):
return self.__a
def setA(self,a):
self.__a = a
a = Test(7)
b = a
b.setA(99)
print(a.getA())
print(b.getA())
Code: Alles auswählen
99
99
=> Warum haben sich sowohl a, als auch b verändert, obwohl ich die set Methode nur bei b anwende?
Ich vermute (und hier könnt ihr mich gerne korrigieren), dass das Objekt (bzw die Klasse) inklusive Zeiger auf den Speicherort zu b kopiert wird und daher sowohl die Variablen a und b in der set Methode angepasst werden. Ist das so ungefähr richtig interpretiert?
Wie würde man vorgehen wenn man das vor hat, was ich im Code versuche zu tun (um das Ziel zu spezifizieren: Ich möchte eine Variable b mit gleichen Properties wie a erzeugen und anschließend einen Wert verändern ohne dabei a zu verändern)