डबल अंडरस्कोर सी ++ या जावा अर्थ में सदस्य 'निजी' नहीं बनाते हैं - पायथन काफी स्पष्ट रूप से उस तरह के भाषा-लागू पहुंच नियमों को छोड़ देता है। एक सिंगल अंडरस्कोर, सम्मेलन द्वारा, एक विशेषता या एक विधि को "क्रियान्वयन विस्तार" के रूप में चिह्नित करता है - यानी, बाहर की चीजें अभी भी इसे प्राप्त कर सकती हैं, लेकिन यह कक्षा 'इंटरफेस का एक समर्थित हिस्सा नहीं है और इसलिए, गारंटी है कि कक्षा इनवेरिएंट या बैक/फॉरवर्ड संगतता के बारे में बता सकती है अब लागू नहीं होती है। यह एक ही तरीके से एक ही वैचारिक समस्या को 'निजी' (इंटरफ़ेस और कार्यान्वयन का पृथक्करण) के रूप में हल करता है। -
डबल रेखांकित नाम mangling जो अभी भी 'निजी' नहीं है आह्वान यह सिर्फ ऊपर है, जिससे की एक थोड़ा मजबूत सूत्रीकरण है: - यह समारोह, इस वर्ग के एक कार्यान्वयन विस्तार है लेकिन - उपवर्गों हो सकता है यथोचित कि जिससे __name
क्लास का नाम शामिल करने के लिए घायल है मूल
का एक ओवरराइड संस्करण इस भाषा समर्थन का एक छोटा सा लेता है, के रूप में मतलब नहीं है एक ही नाम की एक विधि की अपेक्षा - ताकि इसके उप-वर्ग संस्करण ओवरराइड करने के बजाय अलग-अलग नाम प्राप्त करें। उप-वर्ग या बाहरी कोड के लिए यह अभी भी संभव है कि वह विधि उस कॉल को कॉल करे, यदि यह वास्तव में करना चाहता है - और नाम बदलने का लक्ष्य स्पष्ट रूप से को रोकने के लिए स्पष्ट नहीं है।
लेकिन क्योंकि यह सब से, 'सुरक्षित' पता चला है पायथन में ज्यादा समझ बनाने के लिए नहीं - अगर आप वास्तव में एक विधि जब तक और एक उपवर्ग से बुलाया (कि अपरिवर्तनशीलताओं को तोड़ सकते थे, वास्तविक, तो आप शायद डॉन है अगर आपको लगता है कि आप ऐसा नहीं करते हैं), पाइथन वे सिर्फ दस्तावेज करने के लिए है। अपने डॉकस्ट्रिंग में एक नोट डालें "इसे केवल उप-वर्गों द्वारा ही बुलाया जाता है", और इस धारणा के साथ चलाया जाता है कि ग्राहक सही काम करेंगे - क्योंकि यदि वे नहीं करते हैं, तो यह उनकी स्वयं की समस्या बन जाती है।
कोई नहीं कर सकता। '_single_underscore' सम्मेलन का प्रयोग करें और खुश रहें। – JBernardo