ID Objek yang Sama untuk Kejadian Kelas Akibat
Apabila mencipta berbilang kejadian kelas tanpa memberikan nama kepada mereka, Python memberikan ID yang sama kepada kesemuanya. Tingkah laku ini, yang boleh mengejutkan pada pandangan pertama, adalah disebabkan oleh konsep jangka hayat objek dalam Python.
ID objek memastikan keunikannya hanya semasa hayat objek. Dalam contoh yang disediakan, someClass() dipanggil beberapa kali dalam skop satu pernyataan. Setiap panggilan mencipta objek baharu. Walau bagaimanapun, memandangkan objek ini tidak diperuntukkan kepada mana-mana pembolehubah dan skopnya tamat serta-merta selepas penyataan selesai dilaksanakan, ia tersedia untuk pengumpulan sampah.
Dalam CPython, pelaksanaan lalai Python, pengumpulan sampah menggunakan pengiraan rujukan. Selain itu, ID objek terikat pada lokasi memorinya. Gabungan faktor ini menerangkan sebab akibat akibat someClass() berkongsi ID yang sama: memori akan diagihkan dan digunakan semula apabila objek baharu dicipta dalam skop fungsi yang sama.
Untuk menangani tingkah laku ini dan memastikan ID yang berbeza untuk kelas contoh, pertimbangkan sama ada menyimpan objek di sekeliling dalam struktur data atau melaksanakan skema ID tersuai dalam kelas.
Atas ialah kandungan terperinci Mengapa Kejadian Kelas Python Berturut-turut, Tanpa Nama Berkongsi ID Objek Yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!