การจัดการการเข้าถึงข้อมูล: แอตทริบิวต์ส่วนตัว

การเขียนโปรแกรมเชิงวัตถุใน Python

Alex Yarosh

Content Quality Analyst @ DataCamp

ข้อมูลทั้งหมดในคลาสเป็น public

เราทุกคนเป็นผู้ใหญ่

การเขียนโปรแกรมเชิงวัตถุใน Python

การจำกัดการเข้าถึง

  • หลักการตั้งชื่อ
  • ใช้ @property เพื่อควบคุมการเข้าถึง
  • การ override __getattr__() และ __setattr__()
การเขียนโปรแกรมเชิงวัตถุใน Python

หลักการตั้งชื่อ: แอตทริบิวต์ภายใน

obj._att_name, obj._method_name()

  • ขึ้นต้นด้วย _ ตัวเดียว → "internal"
  • ไม่ใช่ส่วนหนึ่งของ public API
  • ในฐานะผู้ใช้คลาส: "อย่าแตะสิ่งนี้"
  • ในฐานะผู้พัฒนาคลาส: ใช้สำหรับรายละเอียดการ implement, helper functions..

df._is_mixed_type , datetime._ymd2ord()

การเขียนโปรแกรมเชิงวัตถุใน Python

หลักการตั้งชื่อ: pseudoprivate attributes

obj.__attr_name , obj.__method_name()

  • ขึ้นต้นด้วย __ แต่ไม่ลงท้ายด้วย __ → "private"
  • ไม่ถูก inherit
  • Name mangling: obj.__attr_name จะถูกตีความเป็น obj._MyClass__attr_name
  • ใช้เพื่อป้องกันการชนกันของชื่อในคลาสที่ inherit

 

__ ที่นำหน้า และ ต่อท้าย ใช้ เฉพาะ กับ built-in method ของ Python (__init__(),__repr__()) เท่านั้น!

การเขียนโปรแกรมเชิงวัตถุใน Python

มาฝึกกันเถอะ!

การเขียนโปรแกรมเชิงวัตถุใน Python

Preparing Video For Download...