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

Data Hiding ในคลาส Python ทำงานอย่างไร

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 ทำให้เข้าถึงด้วยชื่อเดิมไม่ได้