Capisco la differenza tra copyvs. deepcopynel modulo di copia. Ho usato copy.copye copy.deepcopyprima con successo, ma questa è la prima volta che ho effettivamente sovraccaricato i metodi __copy__e __deepcopy__. Ho già Googled intorno e guardato attraverso il built-in moduli Python per cercare istanze del __copy__e __deepcopy__funzioni (ad esempio sets.py, decimal.pye fractions.py), ma non sono ancora sicuro al 100% che ho capito bene.
Ecco il mio scenario:
Ho un oggetto di configurazione. Inizialmente, creerò un'istanza di un oggetto di configurazione con un set di valori predefinito. Questa configurazione verrà trasferita a più altri oggetti (per garantire che tutti gli oggetti inizino con la stessa configurazione). Tuttavia, una volta avviata l'interazione con l'utente, ogni oggetto deve modificare le proprie configurazioni in modo indipendente senza influire sulle configurazioni dell'altro (il che mi dice che dovrò fare delle copie profonde della mia configurazione iniziale da consegnare).
Ecco un oggetto di esempio:
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
Qual è il modo giusto per implementare i metodi copye deepcopysu questo oggetto per garantire copy.copye copy.deepcopyfornire il comportamento corretto?