Rumah >pembangunan bahagian belakang >Tutorial Python >Python -Bagaimana untuk menentukan pembolehubah awam, peribadi dan dilindungi dalam kelas

Python -Bagaimana untuk menentukan pembolehubah awam, peribadi dan dilindungi dalam kelas

WBOY
WBOYasal
2024-09-12 10:22:19957semak imbas

Python -How to define public, private and protected variables in a class

pengenalan

Python, sebagai bahasa pengaturcaraan berorientasikan objek, menyediakan pelbagai cara untuk merangkum data dalam kelas.
Salah satu aspek utama enkapsulasi ini ialah keterlihatan pembolehubah kelas, yang boleh dikategorikan sebagai awam, dilindungi dan peribadi. Dalam artikel ini, kita akan meneroka cara mentakrifkan pembolehubah awam, peribadi dan dilindungi dalam kelas Python.

Tingkah laku pembolehubah ini senyap berbeza daripada bahasa pengaturcaraan lain. Kawalan akses ini hanyalah konvensyen penamaan dalam python dan bukannya penyembunyian objek sebenar.

1. Pembolehubah Awam

Pembolehubah awam ialah jenis pembolehubah yang paling mudah diakses. Mereka boleh diakses dari mana-mana sahaja, di dalam dan di luar kelas. Dalam Python, semua pembolehubah kelas adalah awam secara lalai melainkan ditakrifkan sebaliknya secara eksplisit.

Contoh:

class MyClass:
    def __init__(self, name):
        self.name = name  # Public variable

obj = MyClass("John")
print(obj.name)  # Accessible outside the class
#Output : John

Dalam contoh ini, nama ialah pembolehubah awam. Anda boleh mengakses dan mengubah suainya dari luar kelas tanpa sebarang sekatan.

2. Pembolehubah Dilindungi

Pembolehubah yang dilindungi bertujuan untuk diakses hanya dalam kelas dan subkelasnya. Walaupun Python tidak menguatkuasakan kawalan capaian yang ketat, konvensyen untuk menunjukkan bahawa pembolehubah dilindungi adalah dengan meletakkan awalan namanya dengan satu garis bawah (_).

Contoh:

class MyClass:
    def __init__(self, name, age):
        self._age = age  # Protected variable

class ChildClass(MyClass):
    def display(self):
        print(f"Age: {self._age}")  # Accessible within a subclass

obj = ChildClass("John", 30)
obj.display()  
# Output: Age: 30

Dalam contoh ini, umur ialah pembolehubah yang dilindungi. Walaupun Python tidak menghalang anda daripada mengaksesnya terus di luar kelas, tindakan itu bertentangan dengan penggunaan yang dimaksudkan.

3. Pembolehubah Peribadi

Pembolehubah peribadi dimaksudkan untuk diakses hanya dalam kelas yang mentakrifkannya. Python menandakan pembolehubah persendirian dengan memberi awalan nama pembolehubah dengan garis bawah berganda (__). Ini mencetuskan gangguan nama, yang menjadikannya lebih sukar (tetapi tidak mustahil) untuk mengakses pembolehubah persendirian dari luar kelas.

Contoh:

class MyClass:
    def __init__(self, name, age, salary):
        self.__salary = salary  # Private variable

    def display_salary(self):
        print(f"Salary: {self.__salary}")  # Accessible within the class

obj = MyClass("John", 30, 50000)
obj.display_salary()  # Output: Salary: 50000

# Trying to access the private variable outside the class
print(obj.__salary)  # Raises AttributeError

Dalam contoh ini, gaji ialah pembolehubah persendirian. Jika anda cuba mengaksesnya terus dari luar kelas, Python akan menimbulkan AttributeError. Walau bagaimanapun, anda masih boleh mengaksesnya menggunakan versi yang rosak nama, walaupun ini tidak digalakkan.

Contoh Nama Mangling:

print(obj._MyClass__salary)  # Output: 50000

Barisan kod ini menunjukkan cara pembolehubah persendirian dinamakan semula secara dalaman untuk memasukkan nama kelas, menjadikannya kurang boleh diakses.

Ringkasan

  • Pembolehubah Awam: Boleh diakses dari mana-mana sahaja; tiada garis bawah.
  • Pembolehubah Dilindungi: Boleh diakses dalam kelas dan subkelasnya; diawali dengan garis bawah tunggal (_).
  • Pembolehubah Peribadi: Boleh diakses hanya dalam kelas; diawali dengan garis bawah berganda (__).

Walaupun kawalan akses Python berdasarkan konvensyen penamaan dan bukannya penguatkuasaan yang ketat, mengikuti konvensyen ini membantu mengekalkan kejelasan dan integriti kod. Memahami cara mentakrif dan menggunakan pembolehubah awam, dilindungi dan peribadi adalah penting untuk pengaturcaraan berorientasikan objek yang berkesan dalam Python.

Atas ialah kandungan terperinci Python -Bagaimana untuk menentukan pembolehubah awam, peribadi dan dilindungi dalam kelas. 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