"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन के @प्रॉपर्टी डेकोरेटर की मूल बातें समझाई गईं

पायथन के @प्रॉपर्टी डेकोरेटर की मूल बातें समझाई गईं

2024-08-18 को प्रकाशित
ब्राउज़ करें:271

The Basics of Python

पायथन के @प्रॉपर्टी डेकोरेटर को समझना

पायथन में, @property डेकोरेटर एक शक्तिशाली सुविधा है जो आपको ऑब्जेक्ट विशेषताओं को अधिक नियंत्रण और सुंदरता के साथ प्रबंधित करने की अनुमति देती है। @संपत्ति को पूरी तरह से समझने के लिए, पहले गेटर्स और सेटर्स की अवधारणा को समझने में मदद मिलती है। यह ब्लॉग पोस्ट इन अवधारणाओं को समझाएगा और कैसे @property आपके कोड को सरल और बेहतर बना सकता है।

गेटर्स और सेटर्स क्या हैं?

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में, गेटर्स और सेटर्स एक क्लास की निजी विशेषताओं तक पहुंचने और संशोधित करने के लिए उपयोग की जाने वाली विधियां हैं। वे विशेषताओं तक पहुँचने और अद्यतन करने के तरीके को नियंत्रित करके एनकैप्सुलेशन को लागू करने में मदद करते हैं।

  • गेटर: एक विधि जो एक निजी विशेषता का मान पुनर्प्राप्त करती है। इसका उपयोग विशेषता को पढ़ने की पहुंच प्रदान करने के लिए किया जाता है।

  • सेटर: एक विधि जो किसी निजी विशेषता का मान सेट या अपडेट करती है। इसका उपयोग विशेषता तक लेखन पहुंच प्रदान करने के लिए किया जाता है और इसमें अक्सर सत्यापन शामिल होता है।

गेटर्स और सेटर्स का उपयोग क्यों करें?

  1. एनकैप्सुलेशन: वे आपको किसी विशेषता के आंतरिक प्रतिनिधित्व को छिपाने और केवल वही प्रदर्शित करने की अनुमति देते हैं जो आवश्यक है।

  2. सत्यापन: यह सुनिश्चित करने के लिए कि विशेषताएँ वैध मानों पर सेट हैं, सेटर्स सत्यापन तर्क शामिल कर सकते हैं।

  3. पठनीयता: वे विशेषताओं तक पहुंचने और संशोधित करने के लिए एक स्पष्ट इंटरफ़ेस प्रदान करके कोड को अधिक पठनीय बना सकते हैं।

@संपत्ति का परिचय

पायथन में @property डेकोरेटर आपको उन तरीकों को परिभाषित करने की अनुमति देता है जिन्हें विशेषताओं की तरह एक्सेस किया जा सकता है। यह आपके कोड को साफ़ और अधिक सहज बनाता है, क्योंकि आप विशेषता एक्सेस की तरह दिखने वाली विधि कॉल के माध्यम से विशेषताओं को प्रबंधित कर सकते हैं।

यहां बताया गया है कि आप @property का उपयोग कैसे कर सकते हैं:

  1. एक गेटर को परिभाषित करें: एक विशेषता का मान पुनर्प्राप्त करने वाली विधि बनाने के लिए @property का उपयोग करें।

  2. एक सेटर को परिभाषित करें: एक विशेषता का मान सेट करने वाली विधि बनाने के लिए @.setter का उपयोग करें।

  3. एक डिलीटर को परिभाषित करें: विशेषता को हटाने वाली एक विधि बनाने के लिए @.deleter का उपयोग करें।

उदाहरण

आइए एक क्लास सर्कल बनाएं जो सर्कल की त्रिज्या को प्रबंधित करने के लिए @property का उपयोग करता है:

class Circle:
    def __init__(self, radius):
        self._radius = radius

    @property
    def radius(self):
        """Getter method for the radius property."""
        return self._radius

    @radius.setter
    def radius(self, value):
        """Setter method for the radius property."""
        if value 



उपयोग:

c = Circle(5)
print(c.radius)  # 5

c.radius = 10  # Set new value
print(c.radius)  # 10

del c.radius  # Delete the property

इस उदाहरण में:

  • @प्रॉपर्टी डेकोरेटर रेडियस विधि को गेटर के रूप में परिभाषित करता है।

  • @radius.setter डेकोरेटर त्रिज्या मान सेट करने की अनुमति देने के लिए एक सेटर विधि को परिभाषित करता है।

  • @radius.deleter डेकोरेटर त्रिज्या विशेषता को हटाने के लिए एक डिलीटर विधि को परिभाषित करता है।

व्यावहारिक उपयोग के मामले

  1. सत्यापन: डेटा को सेट करने से पहले उसे सत्यापित करने के लिए सेटर्स का उपयोग करें। उदाहरण के लिए, यह सुनिश्चित करना कि त्रिज्या सकारात्मक है।

  2. परिकलित गुण: अन्य विशेषताओं के आधार पर परिकलित मान वापस करने के लिए गेटर्स का उपयोग करें। उदाहरण के लिए, किसी वृत्त के क्षेत्रफल की गणना करना।

  3. एनकैप्सुलेशन: एक स्वच्छ इंटरफ़ेस को उजागर करते हुए एक विशेषता के आंतरिक प्रतिनिधित्व को छुपाएं।

परिकलित संपत्ति का उदाहरण
class Rectangle:
    def __init__(self, width, height):
        self._width = width
        self._height = height

    @property
    def area(self):
        """Compute the area of the rectangle."""
        return self._width * self._height

उपयोग:

rect = Rectangle(10, 5)
print(rect.area)  # 50

इस उदाहरण में, क्षेत्र एक गणना की गई संपत्ति है जो चौड़ाई और ऊंचाई का उत्पाद लौटाती है।

साक्षात्कार प्रश्न और उत्तर

  1. प्रश्न: पायथन में @property डेकोरेटर का उद्देश्य क्या है? A: @property डेकोरेटर एक विधि को एक विशेषता की तरह एक्सेस करने की अनुमति देता है। यह किसी विशेषता तक पहुंच को प्रबंधित करने के लिए गेटर, सेटर और डिलीटर तरीकों को परिभाषित करने का एक तरीका प्रदान करता है।

  2. प्रश्न: क्या आप गेटर, सेटर और डिलीटर विधियों के लिए अलग-अलग नामों का उपयोग कर सकते हैं? ए: नहीं, गेटर, सेटर और डिलीटर विधियों के लिए नाम वैसा ही होना चाहिए. ऐसा इसलिए है क्योंकि वे सभी एक ही संपत्ति का प्रबंधन करने के लिए बने हैं।

  3. प्रश्न: यदि आप केवल @property के साथ गेटर विधि को परिभाषित करते हैं और सेटर या डिलीटर के साथ नहीं तो क्या होता है? ए: यदि आप केवल गेटर विधि को परिभाषित करते हैं, तो संपत्ति केवल-पढ़ने के लिए होगी। आप उस संपत्ति का मूल्य निर्धारित या हटा नहीं पाएंगे।

  4. प्रश्न: @property का उपयोग करने से कोड पठनीयता में सुधार कैसे होता है? ए: यह तरीकों को विशेषताओं की तरह एक्सेस करने की अनुमति देकर पठनीयता में सुधार करता है, जो कोड को साफ और अधिक सहज बनाता है।

  5. प्रश्न: प्रॉपर्टी, सेटर और डिलीटर विधियों के लिए एक ही नाम का उपयोग करना क्यों महत्वपूर्ण है? ए: एक ही नाम का उपयोग यह सुनिश्चित करता है कि सभी विधियां हैं एक ही संपत्ति से जुड़ा है. यह आपको लगातार संपत्ति तक पहुंच प्रबंधित करने की अनुमति देता है।

निष्कर्ष

@प्रॉपर्टी डेकोरेटर पायथन में एक शक्तिशाली सुविधा है जो आपको विशेषताओं को स्वच्छ और नियंत्रित तरीके से प्रबंधित करने की अनुमति देती है। गेट्टर, सेटर और डिलीटर विधियों का उपयोग करके, आप यह सुनिश्चित कर सकते हैं कि आपकी विशेषताओं को इस तरह से एक्सेस, संशोधित और हटा दिया गया है जो आपके ऑब्जेक्ट की अखंडता को बनाए रखता है। @property को प्रभावी ढंग से समझने और उपयोग करने से आपको बेहतर, अधिक रखरखाव योग्य कोड लिखने में मदद मिलेगी।


विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/tapstechie/the-basics-of-pythons-property-decorator-explained-3k46?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3