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