2013-02-23 105 views
41

इसमें एक पायथन मॉड्यूल और फ़ंक्शंस लिखते समय, मेरे पास कुछ "सार्वजनिक" फ़ंक्शन हैं जिन्हें बाहरी लोगों के सामने उजागर किया जाना चाहिए, लेकिन कुछ अन्य "निजी" फ़ंक्शंस जिन्हें केवल देखा जाना चाहिए और स्थानीय और आंतरिक रूप से उपयोग किया जाता है।पायथन "निजी" फ़ंक्शन कोडिंग सम्मेलन

मैं पाइथन में समझता हूं कि कोई पूर्ण निजी कार्य नहीं है। लेकिन "सार्वजनिक" कार्यों और "निजी" कार्यों को अलग करने के लिए सबसे अच्छी, सबसे साफ, या सबसे अधिक उपयोग की जाने वाली शैली क्या है?

मैं शैलियों मुझे पता है में से कुछ की सूची: मॉड्यूल फ़ाइल में

  1. उपयोग __all__ अपने "सार्वजनिक" कार्य (What's the python __all__ module level variable for?)
  2. उपयोग इंगित करने के लिए "निजी" कार्यों
  3. के नाम की शुरुआत में रेखांकित

क्या कोई अन्य विचार या सम्मेलन है जो लोग उपयोग करते हैं?

बहुत बहुत धन्यवाद!

उत्तर

67
पायथन के Class मॉड्यूल प्रलेखन से

:

निजी "उदाहरण चर है कि एक वस्तु के अंदर से छोड़कर पहुँचा नहीं जा सकता पायथन में मौजूद नहीं है। हालांकि, एक पाइथन कोड के बाद एक सम्मेलन होता है: अंडरस्कोर (जैसे _spam) के साथ उपसर्ग वाला नाम एपीआई के गैर-सार्वजनिक भाग के रूप में माना जाना चाहिए (चाहे वह एक फ़ंक्शन, विधि या डेटा सदस्य हो) । इसे एक कार्यान्वयन विस्तार माना जाना चाहिए और बिना किसी सूचना के बदला जा सकता है।

चूंकि वर्ग-निजी सदस्यों के लिए वैध उपयोग-मामला है (अर्थात् उप-वर्गों द्वारा परिभाषित नामों के नामों के नामों के नाम से बचने के लिए), ऐसे तंत्र के लिए सीमित समर्थन है, जिसे नाम मैंगलिंग कहा जाता है। फॉर्म __spam (कम से कम दो अग्रणी अंडरस्कोर, किसी एक पीछे वाले अंडरस्कोर पर) के किसी भी पहचानकर्ता को टेक्स्ट नाम से _classname__spam के साथ प्रतिस्थापित किया गया है, जहां क्लासनाम वर्तमान श्रेणी का नाम है जो अग्रणी अंडरस्कोर को छीन लिया गया है। यह उलझन पहचानकर्ता की सिंटैक्टिक स्थिति के संबंध में किया जाता है, जब तक कि यह कक्षा की परिभाषा के भीतर होता है।

+1

धन्यवाद! तो आम तौर पर लोग मॉड्यूल में "सार्वजनिक" और "निजी" कार्यों के बीच अंतर करने के लिए एक अग्रणी अंडरस्कोर का उपयोग करेंगे? – Kaifei

+9

अधिकतर। प्रलेखन की तरह, यह एक सम्मेलन है, आप अभी भी उन कार्यों तक पहुंच सकते हैं जैसे वे सार्वजनिक हैं, लेकिन चीजों को करने का "सही" तरीका यह दिखाता है कि वे वास्तव में वहां नहीं हैं। –

+0

क्या यह सम्मेलन उन कार्यों पर लागू होता है जो कक्षा आधारित नहीं हैं? – radtek