Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Beberapa Objek Python Kadang-kadang Berkongsi ID yang Sama?

Mengapa Beberapa Objek Python Kadang-kadang Berkongsi ID yang Sama?

Barbara Streisand
Lepaskan: 2024-12-21 20:12:39
asal
321 orang telah melayarinya

Why Do Multiple Python Objects Sometimes Share the Same ID?

ID yang sama untuk Pelbagai Objek: Gelagat Unik Python

Dalam Python, mencipta berbilang objek tanpa memberikannya nama boleh menyebabkan mereka berkongsi ID yang sama. Paradoks yang jelas ini berpunca daripada fakta bahawa ID objek hanya unik dalam jangka hayatnya.

Apabila anda mencipta pembolehubah yang merujuk kepada objek, seperti someClass(), hayat objek bermula apabila pembolehubah ditetapkan dan tamat apabila ia di luar skop. Dalam contoh yang anda berikan:

print(someClass())
print(someClass())
Salin selepas log masuk

Dua panggilan someClass() menghasilkan dua objek, tetapi kedua-duanya dicipta dan dimusnahkan dalam panggilan yang sama untuk mencetak. Oleh itu, mereka berkongsi hayat yang sama dan boleh mempunyai ID yang sama.

Tingkah laku ini diserlahkan lagi dalam penggunaan pengiraan rujukan Python 3.3.3 untuk pengumpulan sampah. Apabila kiraan rujukan objek mencapai sifar (iaitu, tiada pembolehubah merujuk kepadanya), ia menjadi layak untuk dipadamkan. Dalam contoh kami, panggilan kedua kepada someClass() menyebabkan kiraan rujukan objek pertama mencapai sifar, menjadikannya layak untuk deallokasi segera.

Memandangkan objek seterusnya yang akan diperuntukkan diletakkan di lokasi memori yang sama sebagai objek pertama, ia berakhir dengan ID yang sama. Ini menerangkan sebab memanggil kelas yang sama beberapa kali berturut-turut boleh menghasilkan objek dengan ID yang sama.

Jika anda memerlukan ID unik untuk objek, anda boleh mengatasi gelagat ini dengan memberikannya secara eksplisit kepada pembolehubah dan memegangnya :

a = someClass()
b = someClass()
print(id(a))
print(id(b))
Salin selepas log masuk

Di sini, a dan b merujuk kepada objek berasingan dengan ID yang berbeza, walaupun ia tergolong dalam kelas yang sama. Sebagai alternatif, anda boleh melaksanakan mekanisme ID khusus kelas anda sendiri untuk memastikan keunikan.

Atas ialah kandungan terperinci Mengapa Beberapa Objek Python Kadang-kadang Berkongsi ID yang Sama?. 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