ใน Python ทุกอย่างเป็นออบเจ็กต์ มี attributes (ข้อมูล) และ methods (ฟังก์ชัน)
- Attributes: ตัวแปรข้อมูลทั่วไป เช่น name, age, height
- Properties: 属性พิเศษที่มี getter, setter, deleter methods (
__get__,__set__,__delete__)
เมื่อเข้าถึง foo.bar Python จะตรวจสอบว่า bar มี method เหล่านี้หรือไม่ ถ้ามี จะเรียก __get__ แทนการคืนค่าโดยตรง
การสร้าง Property ด้วย Decorator
class C:
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
ใช้ @property สำหรับ getter, @x.setter สำหรับ setter, @x.deleter สำหรับ deleter