ในแง่จริง (ในทางปฏิบัติ) python ไม่มีอะไรที่เรียกว่าตัวแปรสมาชิกส่วนตัวใน Python อย่างไรก็ตาม การเพิ่มขีดเส้นใต้สองตัว (__) ที่จุดเริ่มต้นทำให้ตัวแปรหรือเมธอดเป็นแบบส่วนตัวคือแบบแผนที่ใช้โดยโค้ดหลามส่วนใหญ่
มาทำความเข้าใจแนวคิดนี้ผ่านตัวอย่างกัน −
privateVar1.py
class myClass: __privateVar = 27; def __privMeth(self): print("I'm inside class myClass") def hello(self): print("Private Variable value: ",myClass.__privateVar) foo = myClass() foo.hello() foo.__privateMeth
ในโปรแกรมข้างต้น __privMeth เป็นวิธีการส่วนตัวและ __privateVar เป็นตัวแปรส่วนตัว มาดูผลลัพธ์กันตอนนี้ -
ผลลัพธ์
Private Variable value: 27 Traceback (most recent call last): File "C:/Python/Python361/privateVar1.py", line 12, in <module> foo.__privateMeth AttributeError: 'myClass' object has no attribute '__privateMeth'
จากผลลัพธ์ข้างต้น เราจะเห็นได้ว่านอกคลาส "myClass" คุณไม่สามารถเข้าถึงเมธอดส่วนตัวและตัวแปรส่วนตัวได้ อย่างไรก็ตาม ภายในคลาส (myClass) เราสามารถเข้าถึงตัวแปรส่วนตัวได้ ในเมธอด hello() สามารถเข้าถึงตัวแปร __privateVar ได้ (ดังที่แสดงด้านบน:“ค่าตัวแปรส่วนตัว:27”)
จากตัวอย่างข้างต้น เราสามารถเข้าใจได้ว่าตัวแปรและวิธีการทั้งหมดภายในคลาสนั้นเป็นแบบสาธารณะโดยวิธีการ เมื่อเราประกาศว่าสมาชิกข้อมูลเป็นแบบส่วนตัว หมายความว่าเข้าถึงได้เฉพาะด้านชั้นเรียนและไม่สามารถเข้าถึงได้นอกชั้นเรียน เทคนิคการทำให้ตัวแปรหรือวิธีการส่วนตัวเรียกว่าการจัดการข้อมูล ตัวระบุใดๆ ของแบบฟอร์ม __spam (ขีดล่างนำหน้าอย่างน้อย 2 รายการ ขีดล่างต่อท้ายอย่างน้อย 1 รายการ) จะถูกแทนที่ด้วยข้อความด้วย _classname__spam โดยที่ ชื่อคลาส เป็นชื่อคลาสปัจจุบันที่มีเครื่องหมายขีดล่างนำออก การบิดเบือนนี้ทำได้โดยไม่คำนึงถึงตำแหน่งวากยสัมพันธ์ของตัวระบุ ตราบใดที่มันเกิดขึ้นภายในคำจำกัดความของคลาส
ชื่อขีดล่างคู่มีไว้เพื่อหลีกเลี่ยงการแทนที่โดยไม่ได้ตั้งใจโดยคลาสย่อยแทน