Kesan Definisi Pembolehubah Dalam dan Luar __init__() dalam Kelas
Dalam Python, pembolehubah kelas diisytiharkan dalam fungsi pembina __init__() mempamerkan tingkah laku yang berbeza berbanding dengan yang ditakrifkan di luar. Pembolehubah yang diisytiharkan di dalam __init__() ialah atribut instance, manakala pembolehubah yang ditakrifkan di luar ialah atribut kelas.
Atribut Instance (Defined Inside __init__() dengan 'self')
Pembolehubah prepended dengan diri dalam __init__() dikaitkan dengan contoh objek tertentu. Setiap contoh mempunyai salinan pembolehubah ini sendiri. Oleh itu, perubahan yang dibuat pada pembolehubah ini dalam satu kejadian tidak akan menjejaskan kejadian lain.
Contoh:
<code class="python">class WithClass: def __init__(self): self.value = "Bob" def my_func(self): print(self.value)</code>
Di sini, nilai ialah atribut tika. Setiap tika WithClass akan mempunyai nilainya sendiri.
Atribut Kelas (Ditentukan Di Luar __init__)
Pembolehubah yang ditakrifkan di luar __init__() ialah atribut kelas. Pembolehubah ini dikongsi antara semua keadaan kelas. Sebarang perubahan yang dibuat kepada mereka dalam satu kejadian ditunjukkan merentas semua kejadian lain.
Contoh:
<code class="python">class WithoutClass: value = "Bob" def my_func(self): print(self.value)</code>
Dalam kes ini, nilai ialah atribut kelas. Semua kejadian WithoutClass akan merujuk kepada pembolehubah nilai yang sama.
Akibat Definisi Pembolehubah
Pilihan antara menentukan pembolehubah di dalam atau di luar __init__() bergantung pada fungsi yang diingini :
Penggunaan atribut ini yang tidak betul boleh membawa kepada tingkah laku atau ralat yang tidak dijangka. Sebagai contoh, mentakrifkan atribut sebagai atribut instance apabila ia sepatutnya menjadi atribut kelas mungkin secara tidak sengaja mencipta berbilang salinan pembolehubah, yang membawa kepada isu prestasi atau ketidakkonsistenan data.
Atas ialah kandungan terperinci Apakah Perbezaannya: Contoh vs. Atribut Kelas dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!