Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Menghalang Data Kelas Dikongsi Antara Contoh Objek dalam Python?

Bagaimanakah Saya Boleh Menghalang Data Kelas Dikongsi Antara Contoh Objek dalam Python?

Mary-Kate Olsen
Lepaskan: 2024-12-24 06:02:24
asal
402 orang telah melayarinya

How Can I Prevent Shared Class Data Among Object Instances in 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]
Salin selepas log masuk

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]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan