Я понимаю разницу между copy
и deepcopy
копией в модуле копирования. Раньше copy.deepcopy
успешно использовал copy.copy
и copy.deepcopy
, но это первый раз, когда я фактически перегрузил методы __copy__
и __deepcopy__
. Я уже погуглил и просмотрел встроенные модули Python, чтобы найти экземпляры функций __copy__
и __deepcopy__
(например, sets.py
, decimal.py
и fractions.py
), но я все еще не уверен на 100% Я правильно понял.
Вот мой сценарий:
У меня есть объект конфигурации. Первоначально я собираюсь создать экземпляр одного объекта конфигурации с набором значений по умолчанию. Эта конфигурация будет передана нескольким другим объектам (чтобы все объекты запускались с одинаковой конфигурацией). Однако после начала взаимодействия с пользователем каждый объект должен независимо настраивать свои конфигурации, не затрагивая конфигурации друг друга (что говорит мне, что мне нужно будет сделать глубокие копии моей начальной конфигурации для передачи).
Вот пример объекта:
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
Как правильно реализовать методы copy
и deepcopy
для этого объекта, чтобы обеспечить правильное поведение copy.copy
и copy.deepcopy
?