แอตทริบิวต์ของอ็อบเจ็กต์อาจมองเห็นหรือไม่มองเห็นได้ภายนอกการกำหนดคลาส คุณต้องตั้งชื่อแอตทริบิวต์ด้วยคำนำหน้า 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