Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menghalang Data Kelas Dikongsi Antara Contoh Objek dalam Python?
Mencegah Data Kelas Dikongsi Antara Kejadian
Dalam pengaturcaraan berorientasikan objek, adalah penting untuk mengekalkan data yang berbeza untuk kejadian kelas yang berbeza. Walau bagaimanapun, secara lalai, pembolehubah peringkat kelas dikongsi antara semua kejadian, yang boleh membawa kepada gelagat yang tidak dijangka.
Memahami Isu
Pertimbangkan kod berikut:
class a: list = [] x = a() y = a() x.list.append(1) y.list.append(2) x.list.append(3) y.list.append(4) print(x.list) # prints [1, 2, 3, 4] print(y.list) # prints [1, 2, 3, 4]
Daripada mendapatkan senarai berasingan untuk x dan y, kedua-dua kejadian berkongsi senarai yang sama. Ini berlaku kerana senarai diisytiharkan sebagai pembolehubah kelas, jadi semua kejadian merujuk kepada objek asas yang sama.
Penyelesaian: Pembolehubah Contoh
Untuk mengelakkan data dikongsi, pembolehubah contoh harus dimanfaatkan. Pembolehubah contoh ditakrifkan dalam pembina (__init__) kelas. Berikut ialah kod yang diperbetulkan:
class a: def __init__(self): self.list = [] x = a() y = a() x.list.append(1) y.list.append(2) x.list.append(3) y.list.append(4) print(x.list) # prints [1, 3] print(y.list) # prints [2, 4]
Dalam kes ini, atribut senarai dimulakan untuk setiap contoh dalam pembina, mencipta salinan berasingan. Pernyataan cetakan kini menggambarkan dengan tepat tingkah laku yang dimaksudkan dengan senarai yang berbeza untuk x dan y.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghalang Data Kelas Dikongsi Antara Contoh Objek dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!