Je comprends la différence entre copyet deepcopydans le module de copie. J'ai utilisé copy.copyet copy.deepcopyavant avec succès, mais c'est la première fois que je surcharge les méthodes __copy__et __deepcopy__. Je l' ai déjà googlé autour et regardé à travers le haut-modules Python pour rechercher des instances du __copy__et des __deepcopy__fonctions (par exemple sets.py, decimal.pyet fractions.py), mais je ne suis pas encore à 100% sûr que je l' ai raison.
Voici mon scénario:
J'ai un objet de configuration. Au départ, je vais instancier un objet de configuration avec un ensemble de valeurs par défaut. Cette configuration sera transmise à plusieurs autres objets (pour garantir que tous les objets démarrent avec la même configuration). Cependant, une fois que l'interaction utilisateur commence, chaque objet doit modifier ses configurations indépendamment sans affecter les configurations de l'autre (ce qui me dit que je vais devoir faire des copies en profondeur de ma configuration initiale à remettre).
Voici un exemple d'objet:
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
Quelle est la bonne façon d'implémenter les méthodes copyet deepcopysur cet objet pour m'assurer copy.copyet copy.deepcopyme donner le bon comportement?