Я понимаю разницу между copy
vs. 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
дать мне правильное поведение?