Je comprends la différence entre copy
et deepcopy
dans le module de copie. J'ai utilisé copy.copy
et copy.deepcopy
avant 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.py
et 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 copy
et deepcopy
sur cet objet pour m'assurer copy.copy
et copy.deepcopy
me donner le bon comportement?