Klassenattribute
Verfasst: Sonntag 1. März 2020, 14:09
Hallo,
und zwar habe ich eine Frage zu den folgenden Beispielen
Dann bekomme ich für y = 6 zurück und die Objekteigenschaft x = 5
Wenn ich nun das gleiche Prinzip auf ein 'dict' anwende dann ändert sich das ganze wie folgt
Nun hat sich auch die Objekteigenschaft x geändert. Aber warum?
Anstatt eine Kopie für y anzulegen sieht es so aus als wäre y eine Art Pointer auf x und damit ändern sich nun beide Variablen. Zuvor war das aber nicht der Fall.
Kann mir bitte jemand helfen zu verstehen warum und wie ich hier am besten weitermache? Danke.
und zwar habe ich eine Frage zu den folgenden Beispielen
Code: Alles auswählen
class P:
def __init__(self, x):
self._x = x
def my_func(self):
y = self._x
y = 6
return y
obj = P(5)
out = obj.my_func()
print(out)
print(obj._x)
5
6
Wenn ich nun das gleiche Prinzip auf ein 'dict' anwende dann ändert sich das ganze wie folgt
Code: Alles auswählen
class P:
def __init__(self, x):
self._x = {'A': 0, 'B': 0, 'C': 0}
def my_func(self):
y = self._x
y['A'] = 10
return y
obj = P(5)
out = obj.my_func()
print(out)
print(obj._x)
{'A': 10, 'B': 0, 'C': 0}
{'A': 10, 'B': 0, 'C': 0}
Anstatt eine Kopie für y anzulegen sieht es so aus als wäre y eine Art Pointer auf x und damit ändern sich nun beide Variablen. Zuvor war das aber nicht der Fall.
Kann mir bitte jemand helfen zu verstehen warum und wie ich hier am besten weitermache? Danke.