Python क्लासेस हमें संबंधित डेटा और फ़ंक्शनों को समाहित करके कोड को व्यवस्थित करने की अनुमति देती हैं। कुछ मामलों में, हम क्लास के बाहर से वेरिएबल्स के उपयोग को रोकना चाह सकते हैं। Python में, हम निजी वेरिएबल्स का उपयोग कर सकते हैं ताकि कोड के उपयोगकर्ता उन वेरिएबल्स तक पहुंच न सकें। निजी वेरिएबल्स को वेरिएबल के नाम की शुरुआत में दो अंडरस्कोर (__) लगाकर परिभाषित किया जाता है। जबकि सार्वजनिक वेरिएबल्स को क्लास के बाहर सीधे एक्सेस किया जा सकता है, निजी वेरिएबल्स को नहीं किया जा सकता। आइए इसे एक उदाहरण से समझते हैं:
class PublicPrivateExample:
def __init__(self):
self.public_var = 'I am public!' # सार्वजनिक वेरिएबल
self.__private_var = 'I am private!' # निजी वेरिएबल
example = PublicPrivateExample()
print(example.public_var) # 'I am public!'
print(example.__private_var) # AttributeError उत्पन्न करेगा
इस उदाहरण में, हम देख सकते हैं कि सार्वजनिक वेरिएबल आसानी से उपलब्ध है। हालांकि, यदि हम निजी वेरिएबल को एक्सेस करने का प्रयास करते हैं, तो Python एक AttributeError उठाएगा।
Python में Java या C++ जैसी अन्य भाषाओं की तरह सख्त निजी सदस्यों का प्रावधान नहीं है। Python में, एक निजी सदस्य केवल एक परंपरा है जो सुझाव देती है कि उस सदस्य को सीधे एक्सेस न करें। Python नाम मैनगलिंग का उपयोग करता है ताकि गलती से निजी वेरिएबल को एक्सेस या संशोधित करना कम संभव हो। हालांकि, यदि आवश्यक हो तो आप फिर भी इसे एक्सेस कर सकते हैं, लेकिन आम तौर पर ऐसा करना हतोत्साहित किया जाता है:
print(example._PublicPrivateExample__private_var) # I am private!
यहां, निजी वेरिएबल तक पहुंच _ClassName__private_var का उपयोग करके की जाती है। यह उसके सीधे एक्सेस को हतोत्साहित करता है और इनकैप्सुलेशन को प्रोत्साहित करता है। यदि आप निजी वेरिएबल्स तक पहुंच प्रदान करना चाहते हैं, तो आपको सार्वजनिक मेथड्स प्रदान करने चाहिए:
class PublicPrivateExample:
def __init__(self):
self.__private_var = 'I am private!'
def get_private_var(self): # निजी वेरिएबल के लिए गेटर मेथड
return self.__private_var # हम क्लास के अंदर निजी फ़ील्ड्स को एक्सेस कर सकते हैं
example = PublicPrivateExample()
print(example.get_private_var()) # 'I am private!' प्रिंट करेगा
यहां हम एक सार्वजनिक मेथड get_private_var का उपयोग करके अपने निजी वेरिएबल तक नियंत्रित पहुंच प्रदान करते हैं। इस तरह, हम अपने डेटा की एनकैप्सुलेशन और अखंडता बनाए रखते हैं।
💭
ध्यान रखें कि निजी वेरिएबल्स का उपयोग एनकैप्सुलेशन के अभ्यास का हिस्सा है, जो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के मूल सिद्धांतों में से एक है। यह डेटा को अनपेक्षित बदलाव और पहुंच से सुरक्षित रखता है।
तो, भले ही Python निजी वेरिएबल्स को सख्ती से लागू नहीं करता, लेकिन अपने कोड को अधिक सुगम और त्रुटि-मुक्त बनाने के लिए उनका उपयोग करना एक अच्छा अभ्यास है।
चुनौती: डेटाबेस क्लास
आपको Python में एक Database क्लास विकसित करने के लिए कहा गया है जो name: value जोड़े संग्रहीत करता है। डेटाबेस को Database क्लास के अंदर एक निजी डिक्शनरी के रूप में दर्शाया जाना चाहिए।
Database क्लास में निम्नलिखित मेथड्स होने चाहिए:
insert(name, value): यह मेथड डेटाबेस में एक नया name: value जोड़ा डालेगा। यदि name पहले से ही डेटाबेस में मौजूद है, तो यह एक संदेश प्रिंट करेगा: Name already exists in the database..
delete(name): यह मेथड डेटाबेस से एक मौजूदा name: value जोड़ा हटाएगा। यदि name मौजूद नहीं है, तो यह एक संदेश प्रिंट करेगा: Name does not exist in the database..
update(name, value): यह मेथड डेटाबेस में एक मौजूदा name का value अपडेट करेगा। यदि name मौजूद नहीं है, तो यह एक संदेश प्रिंट करेगा: Name does not exist in the database..
display(): यह मेथड डेटाबेस में सभी name: value जोड़े name: value प्रारूप में प्रदर्शित करेगा। सभी मानों को अल्पविराम और स्पेस (, ) से अलग किया जाना चाहिए।