Rumah >pembangunan bahagian belakang >Tutorial Python >Contoh vs. Pembolehubah Kelas: Di Mana Anda Harus Mengisytiharkan Pembolehubah dalam Python?

Contoh vs. Pembolehubah Kelas: Di Mana Anda Harus Mengisytiharkan Pembolehubah dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-10-26 13:33:02185semak imbas

  Instance vs. Class Variables: Where Should You Declare Variables in Python?

Pembolehubah Dalam dan Luar init

Lokasi di mana anda mengisytiharkan pembolehubah dalam kelas Python boleh memberi kesan ketara padanya tingkah laku. 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>

Pembolehubah Kelas lwn. Pembolehubah Instance

Perbezaan utama antara kedua-dua kelas ini terletak pada tempat nilai pembolehubah diisytiharkan. Dalam WithClass, ia diisytiharkan dalam kaedah __init__, menjadikannya pembolehubah contoh. Ini bermakna setiap tika WithClass akan mempunyai salinan bebas atribut nilainya sendiri.

Sebaliknya, dalam WithoutClass, atribut nilai diisytiharkan di luar kaedah __init__, menjadikannya pembolehubah kelas. Akibatnya, semua tika WithoutClass akan berkongsi tika tunggal atribut nilai yang sama.

Kaedah Pemula

Kaedah __init__ dalam WithClass berfungsi sebagai pemula untuk setiap contoh objek. Apabila tika dibuat, kaedah __init__ dipanggil dan atribut self.value diberikan nilai "Bob." Nilai ini kemudiannya disimpan dalam contoh dan tersedia untuk kaedah lain dalam objek.

Akibat

Keputusan di mana untuk mengisytiharkan pembolehubah boleh mempunyai implikasi untuk anda tingkah laku program. Jika anda memerlukan setiap contoh kelas mempunyai nilai uniknya sendiri untuk atribut tertentu, ia harus diisytiharkan dalam kaedah __init__ sebagai pembolehubah contoh. Sebagai alternatif, jika semua kejadian kelas harus berkongsi nilai yang sama untuk atribut, ia boleh diisytiharkan di luar kaedah __init__ sebagai pembolehubah kelas.

Oleh itu, perbezaan kritikal ialah sama ada anda mahu pembolehubah itu menjadi dikongsi antara semua kejadian kelas (pembolehubah kelas) atau menjadi unik kepada setiap tika individu (pembolehubah contoh).

Atas ialah kandungan terperinci Contoh vs. Pembolehubah Kelas: Di Mana Anda Harus Mengisytiharkan Pembolehubah 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