पायथन में, सब कुछ एक ऑब्जेक्ट है। और हर ऑब्जेक्ट के एट्रिब्यूट्स और मेथड्स या फंक्शन्स होते हैं। एट्रिब्यूट्स डेटा वेरिएबल्स द्वारा वर्णित होते हैं, जैसे नाम, उम्र, ऊंचाई आदि।
प्रॉपर्टीज़ एट्रिब्यूट्स का एक विशेष प्रकार है जिनमें गेटर, सेटर और डिलीट मेथड्स होते हैं जैसे __get__, __set__ और __delete__ मेथड्स।
हालांकि, पायथन में एक प्रॉपर्टी डेकोरेटर है जो एट्रिब्यूट के लिए गेटर/सेटर एक्सेस प्रदान करता है। प्रॉपर्टीज़ एट्रिब्यूट्स का एक विशेष प्रकार हैं। मूल रूप से, जब पायथन निम्न कोड का सामना करता है:
foo = SomeObject() print(foo.bar)
यह foo में bar को खोजता है, और फिर bar की जांच करता है कि क्या इसमें __get__, __set__, या __delete__ मेथड है—और यदि है, तो यह एक प्रॉपर्टी है। यदि यह एक प्रॉपर्टी है, तो केवल bar ऑब्जेक्ट को लौटाने के बजाय, यह __get__ मेथड को कॉल करेगा और जो भी वह मेथड लौटाता है उसे लौटाएगा।
पायथन में, आप property फंक्शन के साथ गेटर, सेटर, और डिलीट मेथड्स परिभाषित कर सकते हैं। यदि आप केवल रीड प्रॉपर्टी चाहते हैं, तो आप अपने मेथड के ऊपर @property डेकोरेटर भी जोड़ सकते हैं।
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
@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