Ich verstehe den Unterschied zwischen copy
vs. deepcopy
im Kopiermodul. Ich habe copy.copy
und copy.deepcopy
zuvor erfolgreich verwendet, aber dies ist das erste Mal, dass ich die __copy__
und __deepcopy__
Methoden überladen habe . Ich habe schon gegoogelt um und sah durch die integrierten Python - Module für Instanzen des aussehen __copy__
und __deepcopy__
Funktionen (zB sets.py
, decimal.py
und fractions.py
), aber ich bin immer noch nicht zu 100% sicher , dass ich es richtig habe.
Hier ist mein Szenario:
Ich habe ein Konfigurationsobjekt. Zunächst werde ich ein Konfigurationsobjekt mit einem Standardwertsatz instanziieren. Diese Konfiguration wird an mehrere andere Objekte übergeben (um sicherzustellen, dass alle Objekte mit derselben Konfiguration beginnen). Sobald die Benutzerinteraktion beginnt, muss jedes Objekt seine Konfigurationen unabhängig voneinander anpassen, ohne die Konfigurationen des anderen zu beeinflussen (was bedeutet, dass ich meine ursprüngliche Konfiguration gründlich kopieren muss, um sie weiterzugeben).
Hier ist ein Beispielobjekt:
class ChartConfig(object):
def __init__(self):
#Drawing properties (Booleans/strings)
self.antialiased = None
self.plot_style = None
self.plot_title = None
self.autoscale = None
#X axis properties (strings/ints)
self.xaxis_title = None
self.xaxis_tick_rotation = None
self.xaxis_tick_align = None
#Y axis properties (strings/ints)
self.yaxis_title = None
self.yaxis_tick_rotation = None
self.yaxis_tick_align = None
#A list of non-primitive objects
self.trace_configs = []
def __copy__(self):
pass
def __deepcopy__(self, memo):
pass
Was ist der richtige Weg, um die copy
und deepcopy
Methoden für dieses Objekt zu implementieren, um sicherzustellen copy.copy
und copy.deepcopy
mir das richtige Verhalten zu geben?