Kelas Python dan Pembolehubah Instance: Membongkar Misteri
Apabila bekerja dengan kelas Python, adalah penting untuk memahami perbezaan antara pembolehubah kelas dan instance . Soalan ini meneroka pemerhatian yang menarik: mengapa pembolehubah tertentu kadangkala berkelakuan seperti pembolehubah kelas dan kadangkala seperti pembolehubah tika.
Mari kita periksa coretan kod yang disediakan untuk mendapatkan kejelasan. Dalam contoh pertama, pembolehubah senarai dimulakan pada peringkat kelas:
<code class="python">class testClass(): list = []</code>
Ini menjadikan senarai pembolehubah kelas, dikongsi antara semua contoh testClass. Sebarang pengubahsuaian untuk menyenaraikan mengikut tika menjejaskan semua kejadian lain.
Walau bagaimanapun, dalam contoh kedua, pembolehubah senarai dimulakan dalam pembina (kaedahinit):
<code class="python">class testClass(): def __init__(self): self.list = []</code>
Ini mencipta pembolehubah tika, unik untuk setiap tika. Sebarang pengubahsuaian untuk menyenaraikan mengikut satu tika tidak menjejaskan kejadian lain.
Untuk memahami tingkah laku ini, kita perlu memahami cara Python menyelesaikan nama menggunakan operator "."". Apabila mengakses self.list, masa jalan mula-mula mencari untuk senarai dalam skop objek contoh Jika tidak ditemui, ia menyemak tika kelas.
Dalam contoh pertama, pembolehubah senarai diselesaikan kepada contoh kelas, menjadikannya pembolehubah kelas walaupun ia muncul dalam pembina (kaedahinit Ini kerana tiada self.list untuk diselesaikan dalam skop contoh.
Dalam contoh kedua, bagaimanapun, pembolehubah senarai diselesaikan kepada contoh. skop, mencipta pembolehubah contoh. Ini kerana self.list kini berada dalam skop kerana pengikatan eksplisit dalam kaedah init.
Ringkasnya, kelakuan pembolehubah sebagai kelas atau pembolehubah instance bergantung pada lokasi permulaannya dan kehadiran self.list dalam skop contoh Dengan memahami semantik bernuansa peleraian nama, pembangun boleh mengurus skop pembolehubah dalam kelas Python dengan berkesan.
Atas ialah kandungan terperinci Berikut ialah beberapa pilihan tajuk, dengan mengingati format soal jawab dan menangkap konsep teras artikel: Lebih langsung & ringkas: * Kelas Python lwn. Pembolehubah Instance: When Doe. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!