Skop Pembolehubah dalam Kelas Python
Variasi Skop
Dalam kelas Python, skop pembolehubah berbeza-beza berdasarkan tempat ia diisytiharkan:
-
Pembolehubah peringkat kelas (fungsi luar): Boleh diakses oleh semua fungsi kelas (pembolehubah awam).
-
Pembolehubah fungsi-tempatan (fungsi dalam kelas): Terhad kepada fungsi khusus itu (dalam skopnya).
pembolehubah diri lwn. Global
Mengisytiharkan pembolehubah dengan diri.(nama pembolehubah) dalam fungsi kelas juga menjadikannya boleh diakses oleh semua fungsi kelas. Walau bagaimanapun, tidak seperti pembolehubah global, pembolehubah ini khusus untuk kejadian semasa dan tidak mengatasi pembolehubah peringkat kelas.
Nuansa Tambahan
-
Single lwn. Awalan Garis Bawah Berganda: Pembolehubah yang bermula dengan garis bawah tunggal (cth., _pembolehubah) dianggap dilindungi dan hanya boleh diakses dalam kelas. Pembolehubah yang bermula dengan garis bawah berganda (cth., __pembolehubah) rosak dan persendirian dengan berkesan.
-
Pembolehubah Setempat: Pembolehubah yang diisytiharkan dalam fungsi kelas adalah setempat kepada fungsi tersebut dan tidak menjejaskan skop kelas.
Contoh
Pertimbangkan kelas berikut:
class Test:
a = None
b = None
def __init__(self, a):
print(self.a)
self.a = a
self._x = 123
self.__y = 123
b = 'meow'
- a dan b ialah pembolehubah peringkat kelas yang boleh diakses daripada mana-mana instance.
- a ditindih oleh diri khusus instance.a dalam __init__.
- _x dilindungi dan bukan sebahagian daripada API awam.
- __y rosak dan peribadi kepada kelas.
- b ialah pembolehubah setempat hanya boleh diakses dalam __init__.
Atas ialah kandungan terperinci Bagaimanakah skop pembolehubah berfungsi dalam kelas 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