Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengakses Pembolehubah Kelas daripada Kaedah dalam Python?

Bagaimana untuk Mengakses Pembolehubah Kelas daripada Kaedah dalam Python?

DDD
DDDasal
2024-10-26 17:24:021035semak imbas

How to Access Class Variables from Methods in Python?

Mengakses Pembolehubah Kelas dalam Kaedah

Apabila bekerja dengan kelas dalam Python, anda mungkin menghadapi keadaan di mana anda perlu mengakses pembolehubah kelas dari dalam kaedah. Walau bagaimanapun, hanya merujuk pembolehubah dalam kaedah boleh mengakibatkan NameError.

Isunya

Pertimbangkan coretan kod berikut:

<code class="python">class Foo(object):
    bar = 1

    def bah(self):
        print(bar)</code>

Apabila cuba menjalankan kod ini, anda akan menemui NameError: 'bar' nama global tidak ditakrifkan. Ini kerana bar pembolehubah ialah pembolehubah kelas, dan kaedah bah tidak dapat mengaksesnya secara langsung.

Penyelesaian

Untuk mengakses pembolehubah kelas dalam kaedah, terdapat dua pilihan:

  • self.bar: Ini merujuk pembolehubah tika, yang khusus untuk setiap tika kelas.
  • Foo .bar: Ini merujuk pembolehubah kelas, yang dikongsi antara semua kejadian kelas.

Jika anda berhasrat untuk mengubah suai pembolehubah kelas, gunakan Foo.bar; jika tidak, gunakan self.bar.

Contoh

Memfaktorkan semula coretan kod menggunakan pendekatan yang betul:

<code class="python">class Foo(object):
    bar = 1

    def bah(self):
        print(self.bar)  # Access the instance variable

f = Foo()
f.bah()  # Prints 1</code>

Kod ini akan mencetak 1, mengakses pembolehubah contoh. Jika anda ingin mengakses pembolehubah kelas, cuma tukar self.bar kepada Foo.bar dalam pernyataan cetakan.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Pembolehubah Kelas daripada Kaedah 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