Ich habe eine Klasse in Python, die verwendet wird, um Parameterdateien für eine Software zu generieren. Diese Software wird in einem iterativen Prozess verwendet und erfordert für jede Iteration einen neuen Satz von Parameterdateien. Daher wird die Klasse PropGen
aufgerufen, um die neuen Dateien unmittelbar vor jeder Iteration zu erstellen.Zwei OrderDict's in der Klassenfreigabe Objekt-ID enthalten, unabhängig von der Kopiermethode
Die Klasse füttert die Standardparameter für diese Dateien einmal vor dem gesamten Prozess und ändert dann die aktuelle Iteration, ändert diese Parameter und schreibt sie in die neue Datei. Die Art, wie ich dies bewerkstellige, besteht darin, die Voreinstellungen in einem zu speichern und einen anderen OrderedDict
self.output_params
zu erstellen, der die geänderten Werte sammelt, bevor er zum Schreiben in eine Datei verwendet wird.
Mein Problem ist, dass, egal wie ich die Werte self.params
-self.output_params
die beiden Wörterbücher bewegen die gleiche Objekt-ID und damit alle Änderungen an self.output_params
in self.params
wider. Bisher habe ich folgendes versucht:
EDIT Fehler mit fehlendem Aufruf von decopy am Ende der Datei gefunden.
Was lässt Sie glauben, dass sie die gleiche Objekt-ID teilen? '==' prüft die Objektidentität nicht, es prüft * Gleichheit *. – BrenBarn
Ich überprüfte auch mit 'id() ' – Grr
Dann zeigen Sie bitte ein in sich geschlossenes Beispiel, das das tatsächliche Problem zeigt. Nichts in Ihrem geposteten Code zeigt tatsächlich, dass die Objekte die gleiche ID haben, und es ist unmöglich zu testen, da Ihre Beispiele nicht in sich abgeschlossen sind. – BrenBarn