डेटा एनकैप्सुलेशन के उद्देश्य के लिए, अधिकांश ऑब्जेक्ट ओरिएंटेड भाषाएं गेटर्स और सेटर्स पद्धति का उपयोग करती हैं। ऐसा इसलिए है क्योंकि हम किसी ऑब्जेक्ट क्लास की विशेषताओं को अन्य वर्गों से छिपाना चाहते हैं ताकि डेटा का कोई आकस्मिक संशोधन अन्य वर्गों के तरीकों से न हो।
जैसा कि नाम से पता चलता है, गेटर्स वे विधियाँ हैं जो निजी विशेषताओं तक पहुँचने में मदद करती हैं या निजी विशेषताओं का मूल्य प्राप्त करती हैं और सेटर्स वे विधियाँ हैं जो निजी विशेषताओं के मूल्य को बदलने या निर्धारित करने में मदद करती हैं।
निजी विशेषता एक्सेस करना
नीचे हम एक क्लास बनाने के लिए कोड लिखते हैं, इसे इनिशियलाइज़ करते हैं और बिना किसी अतिरिक्त तरीके के इसे वेरिएबल एक्सेस करते हैं।
उदाहरण
कक्षा वर्ष_ग्रेजुएट:def __init__(self, year=0):self._year =year# classgrad_obj =year_graded()# को इंस्टेंट करनाआउटपुट
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
<__main__.year_ग्रेजुएट ऑब्जेक्ट 0x00F2DD50>0. परजबकि पहला प्रिंट स्टेटमेंट हमें बनाई गई वस्तु का विवरण देता है, दूसरा प्रिंट ऑब्जेक्ट हमें निजी विशेषता का डिफ़ॉल्ट मान देता है।
गेटर्स और सेटर्स का उपयोग करना
नीचे दिए गए उदाहरणों में हम एक क्लास बनाएंगे, इनिशियलाइज़ करेंगे और फिर उनमें से प्रत्येक में एक गेट्टर और सेटर मेथड जोड़ेंगे। फिर क्लास को इंस्टेंट करके और इन गेट्टर और सेटर मेथड्स का इस्तेमाल करके इन मेथड्स में वेरिएबल्स को एक्सेस करें। तो आप अपने लॉजिक को सेटर मेथड के अंदर छुपा सकते हैं।
उदाहरण
कक्षा वर्ष_ग्रेजुएट:def __init__(self, year=0):self._year =year # getter method def get_year(self):return self._year# setter Methoddef set_year(self, a):self._year =agrad_obj =year_ग्रेजुएट ()# उपयोग करने से पहले setterprint(grad_obj.get_year())# उपयोग करने के बाद settergrad_obj.set_year(2019)print(grad_obj._year)आउटपुट
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं:
02019विशेषताओं को निजी बनाना
अगले उदाहरण में हम देखते हैं कि कैसे तरीकों को निजी बनाया जाए ताकि बाहरी कॉलिंग फ़ंक्शंस द्वारा इसमें चर को हेरफेर न किया जा सके। उन्हें केवल कक्षा के अंदर के कार्यों द्वारा हेरफेर किया जा सकता है। दो अंडरस्कोर लगाकर वे निजी हो जाते हैं।
उदाहरण
कक्षा वर्ष_ग्रेजुएट:def __init__(self, year=32):self._year =year # गेट्टर मेथड डिफ get_year(self):रिटर्न सेल्फ.__वर्ष # सेटटर मेथड को def set_year(self, a):सेल्फ बनाएं .__year =agrad_obj =year_graded()print(grad_obj._year)# सेटरप्रिंट का उपयोग करने से पहले(grad_obj.get_year())## # settergrad_obj.set_year(2019)print(grad_obj._year)का उपयोग करने के बादआउटपुट
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं:
32AttributeError:'year_graded' ऑब्जेक्ट में कोई विशेषता नहीं है '_year_graded__year'निजी तरीकों से मान पढ़ना
नहीं, हम संपत्ति विधि का उपयोग करके और गेट्टर विधि का उपयोग किए बिना निजी विशेषता मानों तक पहुंच सकते हैं।
उदाहरण
कक्षा वर्ष_ग्रेजुएट:def __init__(self, year=32):self._year =year @property def Aboutyear(self):return self.__year @Aboutyear.setter def Aboutyear(self, a):self.__year =agrad_obj =वर्ष_स्नातक ()प्रिंट(grad_obj._year)grad_obj.year =2018print(grad_obj.year)आउटपुट
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं:
322018