Eu entendo a diferença entre copye deepcopyno módulo de cópia. Usei copy.copye copy.deepcopyantes com sucesso, mas esta é a primeira vez que realmente estou sobrecarregando os métodos __copy__e __deepcopy__. Eu já pesquisei ao redor e olhou através do built-in módulos Python para procurar instâncias do __copy__e __deepcopy__funções (por exemplo sets.py, decimal.pye fractions.py), mas eu ainda não estou 100% de certeza que eu entendi direito.
Aqui está o meu cenário:
Eu tenho um objeto de configuração. Inicialmente, vou instanciar um objeto de configuração com um conjunto padrão de valores. Esta configuração será entregue a vários outros objetos (para garantir que todos os objetos comecem com a mesma configuração). No entanto, uma vez que a interação do usuário começa, cada objeto precisa ajustar suas configurações independentemente, sem afetar as configurações uns dos outros (o que me diz que vou precisar fazer cópias profundas de minha configuração inicial para entregar).
Aqui está um objeto de amostra:
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 é a maneira correta de implementar os métodos copye deepcopyneste objeto para garantir copy.copye copy.deepcopyfornecer o comportamento adequado?