Tôi hiểu sự khác biệt giữa copy
so với deepcopy
trong mô-đun sao chép. Tôi đã sử dụng copy.copy
và copy.deepcopy
trước đó thành công, nhưng đây là lần đầu tiên tôi thực sự đi về quá tải các phương thức __copy__
và __deepcopy__
. Tôi đã google xung quanh và nhìn qua được xây dựng trong module Python để tìm kiếm các trường hợp của __copy__
và __deepcopy__
chức năng (ví dụ sets.py
, decimal.py
và fractions.py
), nhưng tôi vẫn không chắc chắn 100% tôi đã nhận nó đúng.
Đây là kịch bản của tôi:
Tôi có một đối tượng cấu hình. Ban đầu, tôi sẽ khởi tạo một đối tượng cấu hình với một bộ giá trị mặc định. Cấu hình này sẽ được chuyển giao cho nhiều đối tượng khác (để đảm bảo tất cả các đối tượng bắt đầu với cùng một cấu hình). Tuy nhiên, một khi tương tác của người dùng bắt đầu, mỗi đối tượng cần phải điều chỉnh cấu hình của nó một cách độc lập mà không ảnh hưởng đến cấu hình của nhau (điều này nói với tôi rằng tôi sẽ cần tạo deepcopys của cấu hình ban đầu để xử lý).
Đây là một đối tượng mẫu:
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
Cách thực hiện đúng copy
và deepcopy
các phương pháp trên đối tượng này là gì để đảm bảo copy.copy
và copy.deepcopy
cung cấp cho tôi các hành vi phù hợp?