Я розумію різницю між модулем копіювання 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забезпечити мені належну поведінку?