संपत्ति () निर्माण संपत्ति गुण देता है।
का सिंटैक्स property()
है:
संपत्ति (fget = कोई नहीं, fset = कोई नहीं, fdel = कोई नहीं, doc = कोई नहीं)
अनुशंसित पढ़ना: पायथन @property: इसका उपयोग कैसे करें और क्यों?
संपत्ति () पैरामीटर
property()
चार वैकल्पिक पैरामीटर लेता है:
- fget (वैकल्पिक) - विशेषता मान प्राप्त करने का कार्य। के लिए चूक
None
। - fset (वैकल्पिक) - विशेषता मान सेट करने के लिए फ़ंक्शन। के लिए चूक
None
। - fdel (वैकल्पिक) - विशेषता मान को हटाने का कार्य। के लिए चूक
None
। - doc (वैकल्पिक) - एक स्ट्रिंग जिसमें विशेषता के लिए प्रलेखन (docstring) होता है। के लिए चूक
None
।
संपत्ति से वापसी मूल्य ()
property()
दिए गए गेटटर, सेटर और डीलेटर से संपत्ति की विशेषता लौटाता है।
- यदि कोई तर्क नहीं दिया जाता है, तो
property()
एक आधार गुण विशेषता देता है जिसमें कोई गेट्टर, सेटर या डेलेटर नहीं होता है। - यदि डॉक्टर प्रदान नहीं किया गया है,
property()
तो गॉटर फ़ंक्शन का डॉकस्ट्रिंग लेता है।
उदाहरण 1: गेटटर, सेटर और डेलेटर के साथ विशेषता बनाएं
class Person: def __init__(self, name): self._name = name def get_name(self): print('Getting name') return self._name def set_name(self, value): print('Setting name to ' + value) self._name = value def del_name(self): print('Deleting name') del self._name # Set property to use get_name, set_name # and del_name methods name = property(get_name, set_name, del_name, 'Name property') p = Person('Adam') print(p.name) p.name = 'John' del p.name
आउटपुट
नाम प्राप्त करना नाम है: जॉन सेटिंग हटाने के नाम पर एडम सेटिंग नाम
यहाँ, _name व्यक्ति के नाम के भंडारण के लिए निजी चर के रूप में उपयोग किया जाता है।
हम भी सेट:
get_name()
व्यक्ति का नाम पाने के लिए एक विधि ,set_name()
व्यक्ति का नाम सेट करने के लिए एक सेटर विधि ,del_name()
व्यक्ति का नाम हटाने के लिए एक विध्वंसक विधि ।
अब, हम property()
विधि को कॉल करके एक नया गुण विशेषता नाम सेट करते हैं ।
जैसा कि कार्यक्रम में दिखाया गया है, p.name
आंतरिक get_name()
रूप से कॉल करने वाले को गेट्टर के रूप में , set_name()
सेटर के del_name()
रूप में और डीलेटर को मुद्रित आउटपुट के माध्यम से तरीकों के अंदर प्रस्तुत करता है।
उदाहरण 2: @property डेकोरेटर का उपयोग करना
उपयोग करने के बजाय property()
, आप @property
पाइटर, सेटर और डिलेटर को असाइन करने के लिए पायथन डेकोरेटर का उपयोग कर सकते हैं ।
class Person: def __init__(self, name): self._name = name @property def name(self): print('Getting name') return self._name @name.setter def name(self, value): print('Setting name to ' + value) self._name = value @name.deleter def name(self): print('Deleting name') del self._name p = Person('Adam') print('The name is:', p.name) p.name = 'John' del p.name
आउटपुट
नाम प्राप्त करना नाम है: जॉन सेटिंग हटाने के नाम पर एडम सेटिंग नाम
यहाँ, उपयोग करने के बजाय property()
, हमने @property
डेकोरेटर का उपयोग किया है ।
सबसे पहले, हम निर्दिष्ट करते हैं कि name()
विधि भी व्यक्ति की एक विशेषता है। यह @property
प्रोग्राम में दिखाए अनुसार गेट्टर विधि से पहले का उपयोग करके किया जाता है ।
इसके बाद, हम सेटर और डीलेटर को निर्दिष्ट करने के लिए विशेषता नाम का उपयोग करते हैं।
यह @name.setter
सेटर विधि के @name.deleter
लिए और डिलेटर विधि के लिए उपयोग किया जाता है ।
ध्यान दें, हमने name()
गेटर, सेटर, और डीलेटर को परिभाषित करने के लिए विभिन्न परिभाषाओं के साथ एक ही विधि का उपयोग किया है ।
अब, जब भी हम उपयोग करते हैं p.name
, तो यह आंतरिक रूप से उपयुक्त गेट्टर, सेटर और डीलेटर को कॉल करता है, जैसा कि विधि के अंदर मौजूद मुद्रित आउटपुट द्वारा दिखाया गया है।