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

การซ่อนข้อมูล (Data Hiding) ใน Python

แอตทริบิวต์ของอ็อบเจ็กต์อาจมองเห็นหรือไม่มองเห็นได้ภายนอกการกำหนดคลาส คุณต้องตั้งชื่อแอตทริบิวต์ด้วยคำนำหน้า underscore คู่ (__) และแอตทริบิวต์เหล่านั้นจึงจะไม่มองเห็นโดยตรงจากภายนอก

ตัวอย่าง

#!/usr/bin/python
class JustCounter:
    __secretCount = 0
    def count(self):
        self.__secretCount += 1
        print self.__secretCount

counter = JustCounter()
counter.count()
counter.count()
print counter.__secretCount

ผลลัพธ์ (Output)

เมื่อรันโค้ดข้างต้น จะได้ผลลัพธ์ดังนี้:

1
2
Traceback (most recent call last):
  File "test.py", line 12, in 
    print counter.__secretCount
AttributeError: JustCounter instance has no attribute '__secretCount'

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

.........................
print counter._JustCounter__secretCount

เมื่อรันโค้ดข้างต้น จะได้ผลลัพธ์ดังนี้:

1
2
2