Data Hiding (การซ่อนข้อมูล)
ใน Python ใช้ Double Underscore นำหน้าชื่อแอตทริบิวต์ เพื่อทำให้เข้าถึงไม่ได้/เป็น Private หรือซ่อนไว้
ตัวอย่างการซ่อนตัวแปร
class MyClass:
__hiddenVar = 0
def add(self, increment):
self.__hiddenVar += increment
print(self.__hiddenVar)
myObject = MyClass()
myObject.add(3) # 3
myObject.add(8) # 11
print(myObject.__hiddenVar) # AttributeError
เข้าถึงค่าที่ซ่อนด้วยไวยากรณ์พิเศษ
class MyClass:
__hiddenVar = 12
def add(self, increment):
self.__hiddenVar += increment
print(self.__hiddenVar)
myObject = MyClass()
myObject.add(3) # 15
myObject.add(8) # 23
print(myObject._MyClass__hiddenVar) # 23
ผลลัพธ์
15 23 23
Private Methods เข้าถึงจากภายนอกได้ แต่ยากกว่าปกติ ไม่มีอะไรใน Python ที่เป็น Private จริงๆ ภายในชื่อ Private Methods/Attributes จะถูก Mangle/Unmangle ทำให้เข้าถึงด้วยชื่อเดิมไม่ได้