Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การซ่อนข้อมูลทำงานอย่างไรใน Python Classes


การซ่อนข้อมูล

ใน Python เราใช้ขีดล่างคู่หน้าชื่อแอตทริบิวต์เพื่อทำให้ไม่สามารถเข้าถึงได้/ส่วนตัวหรือเพื่อซ่อน

โค้ดต่อไปนี้แสดงให้เห็นว่าตัวแปร __hiddenVar ถูกซ่อนไว้อย่างไร

ตัวอย่าง

class MyClass:
    __hiddenVar = 0
    def add(self, increment):
       self.__hiddenVar += increment
       print (self.__hiddenVar)
myObject = MyClass()
myObject.add(3)
myObject.add (8)
print (myObject.__hiddenVar)

ผลลัพธ์

3
Traceback (most recent call last):
11
  File "C:/Users/TutorialsPoint1/~_1.py", line 12, in <module>
    print (myObject.__hiddenVar)
AttributeError: MyClass instance has no attribute '__hiddenVar'

ในโปรแกรมด้านบนนี้ เราพยายามเข้าถึงตัวแปรที่ซ่อนอยู่ภายนอกคลาสโดยใช้อ็อบเจกต์ และมันทำให้เกิดข้อยกเว้น

เราสามารถเข้าถึงค่าของแอตทริบิวต์ที่ซ่อนอยู่โดยใช้รูปแบบพิเศษดังต่อไปนี้ -

ตัวอย่าง

class MyClass:
    __hiddenVar = 12
    def add(self, increment):
       self.__hiddenVar += increment
       print (self.__hiddenVar)
myObject = MyClass()
myObject.add(3)
myObject.add (8)
print (myObject._MyClass__hiddenVar)

ผลลัพธ์

15
23
23

เมธอดส่วนตัวสามารถเข้าถึงได้จากภายนอกคลาส แต่ไม่ง่ายเหมือนในกรณีปกติ ไม่มีสิ่งใดใน Python ที่เป็นส่วนตัวอย่างแท้จริง ภายในชื่อของเมธอดและคุณลักษณะส่วนตัวจะยุ่งเหยิงและแยกไม่ออกในทันทีเพื่อให้ไม่สามารถเข้าถึงได้ด้วยชื่อที่กำหนด