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

ตัวแปรส่วนตัวใน Python


ในแง่จริง (ในทางปฏิบัติ) 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 โดยที่ ชื่อคลาส เป็นชื่อคลาสปัจจุบันที่มีเครื่องหมายขีดล่างนำออก การบิดเบือนนี้ทำได้โดยไม่คำนึงถึงตำแหน่งวากยสัมพันธ์ของตัวระบุ ตราบใดที่มันเกิดขึ้นภายในคำจำกัดความของคลาส

ชื่อขีดล่างคู่มีไว้เพื่อหลีกเลี่ยงการแทนที่โดยไม่ได้ตั้งใจโดยคลาสย่อยแทน