अजगर संपत्ति ()

संपत्ति () निर्माण संपत्ति गुण देता है।

का सिंटैक्स 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, तो यह आंतरिक रूप से उपयुक्त गेट्टर, सेटर और डीलेटर को कॉल करता है, जैसा कि विधि के अंदर मौजूद मुद्रित आउटपुट द्वारा दिखाया गया है।

दिलचस्प लेख...