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.
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.
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.
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.
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!