इस ट्यूटोरियल में, हम निजी चर के बारे में जानेंगे पायथन कक्षाओं . में ।
पायथन में निजी चर नामक अवधारणा नहीं है . लेकिन, अधिकांश पायथन डेवलपर्स यह बताने के लिए नामकरण परंपरा का पालन करते हैं कि एक चर सार्वजनिक नहीं है और यह निजी है।
हमें डबल अंडरस्कोर . के साथ एक वैरिएबल नाम शुरू करना होगा इसे एक निजी चर के रूप में प्रस्तुत करने के लिए (वास्तव में नहीं)। उदाहरण:- एक, दो, आदि ..,.
जैसा कि हमने पहले ही कहा कि वेरिएबल जिनके नाम डबल अंडरस्कोर से शुरू होते हैं, वे निजी नहीं हैं। हम अभी भी एक्सेस कर सकते हैं। आइए देखें कि निजी प्रकार के चर कैसे बनाते हैं और फिर हम देखेंगे कि उन्हें कैसे एक्सेस किया जाए।
# एक क्लासक्लास नमूना बनाना:def __init__(self, nv, pv):# सामान्य चर self.nv =nv # निजी चर (वास्तव में नहीं) self.__pv =pv# वर्ग का एक उदाहरण बनाना नमूना नमूना =नमूना ( 'सामान्य चर', 'निजी चर')
हमने एक वर्ग और उसका उदाहरण बनाया है। हमारे पास दो चर हैं एक सामान्य है और दूसरा __init__ विधि के अंदर निजी है। अब, चरों तक पहुँचने का प्रयास करें। और देखें क्या होता है।
उदाहरण
# एक क्लासक्लास नमूना बनाना:def __init__(self, nv, pv):# सामान्य चर self.nv =nv # निजी चर (वास्तव में नहीं) self.__pv =pv# वर्ग का एक उदाहरण बनाना नमूना नमूना =नमूना ( 'सामान्य चर', 'निजी चर')# एक्सेस करना *nv*print(sample.nv)# एक्सेस करना *__pv**print(sample.__pv)
आउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न आउटपुट मिलेगा।
सामान्य चर------------------------------------------ ---------------------------- विशेषता त्रुटि ट्रेसबैक (सबसे हालिया कॉल अंतिम)<मॉड्यूल में> 14 15 # एक्सेस करना कार्यक्रम ने बिना किसी त्रुटि के nv चर प्रदर्शित किया। लेकिन हमें विशेषता त्रुटि मिली जब हम __pv . तक पहुंचने का प्रयास करते हैं चर।
हमें यह त्रुटि क्यों मिलती है? क्योंकि चर नाम __pv . के साथ कोई विशेषता नहीं है . फिर स्वयं.__pv =pv के बारे में क्या? init विधि में कथन? हम इस पर थोड़ी चर्चा करेंगे। सबसे पहले, आइए देखें कि __pv . तक कैसे पहुंचें चर।
हमारे पास किसी भी वर्ग चर का उपयोग होता है जिसका नाम डबल अंडरस्कोर . से शुरू होता है _className\_variableName_ . के रूप में . तो, या उदाहरण में यह है_नमूना\_pv_ . अब, _नमूना\_pv_ . का उपयोग करके इसे एक्सेस करें नाम।
उदाहरण
# एक क्लासक्लास नमूना बनाना:def __init__(self, nv, pv):# सामान्य चर self.nv =nv # निजी चर (वास्तव में नहीं) self.__pv =pv# वर्ग का एक उदाहरण बनाना नमूना नमूना =नमूना ( 'सामान्य चर', 'निजी चर')# एक्सेस करना *nv*print(sample.nv)# एक्सेस करना *__pv** _Sample__pv नेमप्रिंट (नमूना._Sample__pv)का उपयोग करकेआउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
सामान्य चरनिजी चरचर का नाम क्यों __pv बदल गया है?
पायथन में, नाम मैंगलिंग नामक एक अवधारणा है। पाइथन डबल अंडरस्कोर . से शुरू होने वाले वैरिएबल के नाम बदल देता है . इसलिए, कोई भी वर्ग चर जिसका नाम डबल अंडरस्कोर से शुरू होता है, वह _className\_variableName_ के रूप में बदल जाएगा ।
तो, अवधारणा कक्षा के तरीकों के लिए भी लागू होगी। आप इसे निम्न कोड के साथ देख सकते हैं।
उदाहरण
कक्षा नमूना:def __init__(self, a):self.a =a # निजी विधि (वास्तव में नहीं) def __get_a(self):return self.a# वर्ग का एक उदाहरण बनाना नमूना नमूना =नमूना (5) # आह्वान सही नेमप्रिंट वाली विधिआउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
5------------------------------------------ ----------------------------- विशेषता त्रुटि ट्रेसबैक (सबसे हालिया कॉल अंतिम)<मॉड्यूल> में 14 15 # गलत नाम के साथ विधि का आह्वान ---> 16 प्रिंट (नमूना.__get_a ()) विशेषता त्रुटि:'नमूना' ऑब्जेक्ट में कोई विशेषता नहीं है '__get_a' निष्कर्ष
डबल अंडरस्कोर . का उपयोग करने का उद्देश्य चर या विधि तक पहुँचने से प्रतिबंधित नहीं है। कहने का तात्पर्य यह है कि विशेष चर या विधि को केवल कक्षा के अंदर ही बांधा जाना है। यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।