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

ความแตกต่างระหว่าง Attributes และ Properties ใน Python

ใน 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