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

คุณสมบัติและคุณสมบัติใน python แตกต่างกันอย่างไร


ใน python ทุกอย่างเป็นวัตถุ และทุกอ็อบเจ็กต์มีคุณสมบัติและเมธอดหรือฟังก์ชัน แอตทริบิวต์อธิบายโดยตัวแปรข้อมูล เช่น ชื่อ อายุ ส่วนสูง เป็นต้น

คุณสมบัติเป็นแอตทริบิวต์ชนิดพิเศษที่มีเมธอด getter, setter และ delete เช่น __get__, __set__ และ __delete__ method

อย่างไรก็ตาม มีมัณฑนากรคุณสมบัติใน Python ซึ่งให้การเข้าถึง getter/setter กับคุณสมบัติ Properties เป็นแอตทริบิวต์ชนิดพิเศษ โดยพื้นฐานแล้ว เมื่อ Python พบโค้ดต่อไปนี้:

foo = SomeObject()
print(foo.bar)

มันค้นหาแถบใน foo แล้วตรวจสอบแถบเพื่อดูว่ามี __get__, __set__ หรือ __delete__ วิธี และ หากเป็นเช่นนั้น แสดงว่าเป็นคุณสมบัติ หากเป็นคุณสมบัติ แทนที่จะส่งคืนวัตถุแท่ง มันจะเรียกเมธอด __get__ และส่งคืนเมธอดที่ส่งคืนมา

ใน Python คุณสามารถกำหนด getters, setters และ delete method ด้วยฟังก์ชันคุณสมบัติ หากคุณต้องการเพียงแค่คุณสมบัติ read ก็ยังมี @property decorator ที่คุณสามารถเพิ่มเหนือวิธีการของคุณ

class C(object):
    def __init__(self):
        self._x = None
#C._x is an attribute
@property
    def x(self):
        """I'm the 'x' property."""
        return self._x
# C._x is a property   This is the getter method
@x.setter # This is the setter method
    def x(self, value):
        self._x = value
@x.deleter # This is the delete method
    def x(self):
        del self._x