Saya memahami perbedaan antara copyvs. deepcopydalam modul salin. Saya telah menggunakan copy.copydan copy.deepcopysebelumnya 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 copydan deepcopypada objek ini untuk memastikan copy.copydan copy.deepcopymemberi saya perilaku yang tepat?