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