การซ่อนข้อมูล
ใน 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 ที่เป็นส่วนตัวอย่างแท้จริง ภายในชื่อของเมธอดและคุณลักษณะส่วนตัวจะยุ่งเหยิงและแยกไม่ออกในทันทีเพื่อให้ไม่สามารถเข้าถึงได้ด้วยชื่อที่กำหนด