Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah Perbezaan Antara Pembolehubah Ditakrifkan Di Dalam dan Di Luar `__init__()` dalam Python?

Apakah Perbezaan Antara Pembolehubah Ditakrifkan Di Dalam dan Di Luar `__init__()` dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-10-27 03:54:02340semak imbas

  What's the Difference Between Variables Defined Inside and Outside `__init__()` in Python?

Menyelidiki Perbezaan Antara Pembolehubah Dalam dan Luar __init__()

Pertimbangkan dua kelas berikut:

<code class="python">class WithClass ():
    def __init__(self):
        self.value = "Bob"
    def my_func(self):
        print(self.value)

class WithoutClass ():
    value = "Bob"

    def my_func(self):
        print(self.value)</code>

Pada pandangan pertama, kelas ini kelihatan sama. Walau bagaimanapun, perbezaan yang halus terletak pada penempatan pembolehubah nilai. Dalam kelas pertama (WithClass), nilai dimulakan dalam kaedah __init__(), manakala dalam kelas kedua (TanpaClass), ia diisytiharkan di luar kaedah.

Variables Outside __init__() (Class Atribut) lwn. Pembolehubah Di Dalam __init__() (Atribut Instance)

Penempatan pembolehubah menentukan sama ada ia adalah atribut kelas atau atribut instance.

  • Atribut kelas: Pembolehubah yang diisytiharkan di luar __init__() dikongsi oleh semua kejadian kelas. Ia boleh diakses menggunakan nama kelas, seperti WithoutClass.value.
  • Atribut instance: Pembolehubah yang dibuat di dalam __init__() dan diawali dengan diri. adalah khusus untuk setiap contoh objek. Mereka boleh diakses hanya melalui objek itu sendiri, seperti instance_of_WithClass.value.

Akibat Peletakan

Pembezaan ini mempunyai kesan untuk kelakuan dan penyelenggaraan kod.

  • Penggunaan dalam kaedah: Atribut kelas tersedia untuk semua kaedah dalam kelas, tidak kira di mana ia diisytiharkan. Atribut instance, sebaliknya, mesti diisytiharkan sebelum ia boleh digunakan dalam kaedah.
  • Akses dari luar kelas: Atribut kelas boleh diakses dari luar kelas menggunakan kelas nama. Atribut instance, walau bagaimanapun, hanya boleh diakses melalui instance kelas.
  • Memanipulasi atribut: Atribut kelas mempengaruhi semua tika kelas. Mengubah suai atribut kelas akan mengubah nilainya untuk semua keadaan. Sebaliknya, atribut instance hanya mempengaruhi objek tertentu yang dimilikinya.

Pilihan Peletakan

Pilihan tempat untuk meletakkan pembolehubah bergantung pada cara anda mahu ia berkelakuan dalam kelas. Jika anda mahukan nilai kongsi yang kekal malar merentas kejadian, gunakan atribut kelas. Jika anda mahukan nilai unik untuk setiap tika, ciptanya dalam __init__() sebagai atribut contoh.

Dengan memahami perbezaan antara pembolehubah di dalam dan di luar __init__(), anda boleh mereka bentuk kelas dengan tingkah laku yang jelas dan boleh diramal, mengelakkan kemungkinan kekeliruan dan perangkap.

Atas ialah kandungan terperinci Apakah Perbezaan Antara Pembolehubah Ditakrifkan Di Dalam dan Di Luar `__init__()` dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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