Je comprends la différence entre copy
vs. deepcopy
dans le module de copie. J'ai utilisé copy.copy
y copy.deepcopy
auparavant avec succès, mais c'est la première fois que j'ai réellement surchargé la fonction __copy__
y __deepcopy__
des méthodes. J'ai déjà cherché sur Google et dans les modules Python intégrés des instances de la méthode __copy__
y __deepcopy__
(par exemple sets.py
, decimal.py
y fractions.py
), mais je ne suis pas encore sûr à 100 % d'avoir bien compris.
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 s'assurer que tous les objets démarrent avec la même configuration). Cependant, une fois que l'interaction avec l'utilisateur commence, chaque objet doit modifier ses configurations indépendamment sans affecter les configurations des autres (ce qui me fait dire que je vais devoir faire des copies intégrales de ma configuration initiale pour la distribuer).
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 de mettre en œuvre le copy
y deepcopy
sur cet objet pour s'assurer que copy.copy
y copy.deepcopy
me donner le comportement adéquat ?