Entiendo la diferencia entre copy
vs. deepcopy
en el módulo de copia. He usado copy.copy
y copy.deepcopy
antes con éxito, pero esta es la primera vez que sobrecargo los métodos __copy__
y __deepcopy__
. Ya he buscado en Google y miré a través de la incorporada en los módulos de Python para buscar instancias de la __copy__
y __deepcopy__
funciones (por ejemplo sets.py
, decimal.py
y fractions.py
), pero todavía no estoy 100% seguro de que tengo derecho.
Aquí está mi escenario:
Tengo un objeto de configuración. Inicialmente, voy a crear una instancia de un objeto de configuración con un conjunto de valores predeterminado. Esta configuración se transferirá a varios otros objetos (para garantizar que todos los objetos comiencen con la misma configuración). Sin embargo, una vez que comienza la interacción del usuario, cada objeto debe modificar sus configuraciones de forma independiente sin afectar las configuraciones de los demás (lo que me dice que tendré que hacer copias en profundidad de mi configuración inicial para entregar).
Aquí hay un objeto de muestra:
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
¿Cuál es la forma correcta de implementar los métodos copy
y deepcopy
en este objeto para garantizar copy.copy
y copy.deepcopy
darme el comportamiento adecuado?