Saya memahami perbedaan antara copy
vs. deepcopy
dalam modul salin. Saya telah menggunakan copy.copy
dan copy.deepcopy
sebelumnya berhasil, tetapi ini adalah pertama kalinya saya benar-benar kelebihan beban metode __copy__
dan __deepcopy__
. Aku sudah Googled sekitar dan melihat melalui built-in modul Python untuk mencari contoh dari __copy__
dan __deepcopy__
fungsi (misalnya sets.py
, decimal.py
, dan fractions.py
), tapi aku masih belum 100% yakin aku punya itu benar.
Inilah skenario saya:
Saya memiliki objek konfigurasi. Awalnya, saya akan membuat contoh satu objek konfigurasi dengan satu set nilai default. Konfigurasi ini akan diserahkan ke beberapa objek lainnya (untuk memastikan semua objek dimulai dengan konfigurasi yang sama). Namun, begitu interaksi pengguna dimulai, setiap objek perlu menyesuaikan konfigurasinya secara independen tanpa mempengaruhi konfigurasi satu sama lain (yang mengatakan kepada saya bahwa saya perlu membuat salinan dalam dari konfigurasi awal saya untuk dibagikan).
Berikut contoh objeknya:
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
Apa cara yang tepat untuk mengimplementasikan metode copy
dan deepcopy
pada objek ini untuk memastikan copy.copy
dan copy.deepcopy
memberi saya perilaku yang tepat?