doppelte Verweise/Referenzen auf Instanzvariablen [gelöst]
Verfasst: Donnerstag 7. August 2008, 12:35
Hallo zusammen,
ich stehe vor einem mir (im Moment) unlösbaren Problem, welches ich auf das minimalst mögliche Beispiel reduzieren konnte.
Wie kann ich es verhindern, dass das Dictionary der Instanz f2 nicht mehr eine Referenz auf das Dictionary von f1 verweist, demnach also ein eigenständiges Objekt darstellt?
Soweit ich weiß, fasst der Python-Interpreter (Commandline) String-Literale und sonstige Konstanten zusammen (gleiche Objekt-ID) (wenn sie äquvivalent sind). Mich wundert nur, dass hier eben auch die neuen (leeren) Dictionarys zusammen gefasst werden.
Grüße... Heiko
EDIT:
Lag wohl an der Auswertungsreihefolge für Default-Argumente. Ich hatte das wohl aus dem Hinterkopf verdrängt. Die Instanzierung des Dictionarys habe ich nun in den Konstruktorrumpf verlagert und das Problem ist somit aus der Welt.
Danke für die Aufmerksamkeit... Heiko
ich stehe vor einem mir (im Moment) unlösbaren Problem, welches ich auf das minimalst mögliche Beispiel reduzieren konnte.
Code: Alles auswählen
>>> class Foo(object):
... def __init__(self, d={}):
... self.d = d
...
>>> f1 = Foo()
>>> f2 = Foo()
>>> f1.d['blubb'] = "bar"
>>> f2.d.keys()
['blubb']
>>>
Soweit ich weiß, fasst der Python-Interpreter (Commandline) String-Literale und sonstige Konstanten zusammen (gleiche Objekt-ID) (wenn sie äquvivalent sind). Mich wundert nur, dass hier eben auch die neuen (leeren) Dictionarys zusammen gefasst werden.
Grüße... Heiko
EDIT:
Lag wohl an der Auswertungsreihefolge für Default-Argumente. Ich hatte das wohl aus dem Hinterkopf verdrängt. Die Instanzierung des Dictionarys habe ich nun in den Konstruktorrumpf verlagert und das Problem ist somit aus der Welt.
Danke für die Aufmerksamkeit... Heiko