mobile theme mode icon
theme mode light icon theme mode dark icon
Random Question अनियमित
speech play
speech pause
speech stop

पायथन में डेकोरेटर्स को समझना

डेकोरेटर एक डिज़ाइन पैटर्न है जो आपको ऑब्जेक्ट के मूल कार्यान्वयन को बदले बिना किसी ऑब्जेक्ट के व्यवहार को संशोधित या विस्तारित करने की अनुमति देता है। दूसरे शब्दों में, डेकोरेटर आपको किसी मौजूदा ऑब्जेक्ट में उसके मूल कोड को संशोधित किए बिना नई कार्यक्षमता जोड़ने की अनुमति देता है। डेकोरेटर आमतौर पर एक फ़ंक्शन होता है जो किसी ऑब्जेक्ट को तर्क के रूप में लेता है और एक नया ऑब्जेक्ट लौटाता है जो मूल ऑब्जेक्ट को "लपेटता" है। नई वस्तु में मूल वस्तु के समान ही विधियाँ और विशेषताएँ हैं, लेकिन इसमें कुछ अतिरिक्त कार्यक्षमता या व्यवहार भी है जो डेकोरेटर द्वारा प्रदान किया जाता है। उदाहरण के लिए, मान लें कि आपके पास `कार` नामक एक वर्ग है जिसमें `ड्राइव' नामक एक विधि है ()` जिससे कार चलती है। आप `स्पीडलिमिटडेकोरेटर` नामक एक डेकोरेटर बना सकते हैं जो कार की गति को सीमित करने के लिए `ड्राइव()` विधि को संशोधित करता है। `स्पीडलिमिटडेकोरेटर` मूल `कार` ऑब्जेक्ट को एक तर्क के रूप में लेगा और एक नया `कार` ऑब्जेक्ट लौटाएगा जिसमें मूल `कार` के समान तरीके और विशेषताएं होंगी, लेकिन गति को सीमित करने की अतिरिक्त कार्यक्षमता के साथ। यहां एक है आप पायथन में डेकोरेटर का उपयोग कैसे कर सकते हैं इसका उदाहरण:
```क्लास कार:
डीईएफ़ ड्राइव(स्वयं):
प्रिंट('कार चल रही है')

क्लास स्पीडलिमिटडेकोरेटर:
डीईएफ़ __init__(सेल्फ, कार):
स्व. कार = कार
डीईएफ़ ड्राइव(स्वयं):
self.car.drive()
प्रिंट("कार अब 50 मील प्रति घंटे तक सीमित है")

कार = कार()
स्पीड_लिमिटेड_कार = स्पीडलिमिटडेकोरेटर(कार)स्पीड_लिमिटेड_कार.ड्राइव() # प्रिंट "कार चल रही है" और "कार अब 50 मील प्रति घंटे तक सीमित है"
```
इस उदाहरण में, `स्पीडलिमिटडेकोरेटर` वर्ग अपने कंस्ट्रक्टर में एक `कार` ऑब्जेक्ट को एक तर्क के रूप में लेता है, और फिर `ड्राइव() को संशोधित करता है )` मूल `कार` वस्तु की गति को सीमित करने की विधि। `स्पीडलिमिटडेकोरेटर` वर्ग की अपनी `ड्राइव()` विधि भी है जो लपेटे गए ऑब्जेक्ट की मूल `ड्राइव()` विधि को कॉल करती है, लेकिन 50 मील प्रति घंटे की अतिरिक्त सीमा के साथ।

डेकोरेटर मौजूदा ऑब्जेक्ट को संशोधित करने या विस्तारित करने के लिए एक शक्तिशाली उपकरण हैं उनके मूल कार्यान्वयन को बदले बिना। उनका उपयोग शेष कोड को प्रभावित किए बिना नई कार्यक्षमता जोड़ने, व्यवहार को संशोधित करने या किसी ऑब्जेक्ट के कार्यान्वयन के कुछ हिस्सों को बदलने के लिए भी किया जा सकता है।

Knowway.org आपको बेहतर सेवा प्रदान करने के लिए कुकीज़ का उपयोग करता है। Knowway.org का उपयोग करके, आप कुकीज़ के हमारे उपयोग के लिए सहमत होते हैं। विस्तृत जानकारी के लिए, आप हमारे कुकी नीति पाठ की समीक्षा कर सकते हैं। close-policy