Ich verstehe den Unterschied zwischen copyvs. deepcopyim Kopiermodul. Ich habe copy.copyund copy.deepcopyzuvor 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.pyund 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 copyund deepcopyMethoden für dieses Objekt zu implementieren, um sicherzustellen copy.copyund copy.deepcopymir das richtige Verhalten zu geben?