डबल अंडरस्कोर प्रीफिक्स
Python में, हम एट्रिब्यूट के नाम से पहले डबल अंडरस्कोर यानी __ का उपयोग करते हैं और वे एट्रिब्यूट्स सीधे एक्सेसिबल/विजिबल नहीं होंगे। डबल अंडरस्कोर एट्रिब्यूट के नाम को मैंगल करता है। हालांकि, उस वेरिएबल को अभी भी कुछ ट्रिकी सिंटैक्स का उपयोग करके एक्सेस किया जा सकता है लेकिन यह आमतौर पर अच्छा विचार नहीं है। डबल अंडरस्कोर का उपयोग फुली प्राइवेट वेरिएबल्स के लिए किया जाता है।
Python डॉक्यूमेंटेशन के अनुसार:
यदि आपकी क्लास को सबक्लास करने का इरादा है, और आपके पास ऐसे एट्रिब्यूट्स हैं जिन्हें आप सबक्लासेस द्वारा उपयोग नहीं करना चाहते, तो उन्हें डबल लीडिंग अंडरस्कोर और बिना ट्रेलिंग अंडरस्कोर के नाम देने पर विचार करें। यह Python के नेम मैंगलिंग एल्गोरिदम को इनवोक करता है, जहां क्लास का नाम एट्रिब्यूट नाम में मैंगल हो जाता है। यह एट्रिब्यूट नाम टकराव से बचने में मदद करता है यदि सबक्लासेस अनजाने में समान नाम वाले एट्रिब्यूट्स रखते हैं।
उदाहरण
नीचे दिया गया कोड डबल अंडरस्कोर के उपयोग को दर्शाता है।
class MyClass:
__hiddenVar = 0
def add(self, increment):
self.__hiddenVar += increment
print(self.__hiddenVar)
myObject = MyClass()
myObject.add(3)
myObject.add(8)
print(myObject.__hiddenVar)
आउटपुट
3 Traceback (most recent call last): 11 File "C:/Users/TutorialsPoint1/.PyCharmCE2017.2/config/scratches/scratch_1.py", line 12, in <module> print(myObject.__hiddenVar) AttributeError: MyClass instance has no attribute '__hiddenVar'
उपरोक्त प्रोग्राम में, हमने ऑब्जेक्ट का उपयोग करके क्लास के बाहर हिडन वेरिएबल को एक्सेस करने की कोशिश की और इसने एक्सेप्शन फेंका।