यदि 'स्पष्ट रूप से निहित से बेहतर है', तो पाइथन में स्पष्ट पहुंच संशोधक क्यों नहीं हैं: सार्वजनिक, संरक्षित, निजी, आदि।
मुझे पता है कि विचार यह है कि प्रोग्रामर को पता होना चाहिए कि संकेत के माध्यम से क्या करना है - 'ब्रूट बल' का उपयोग करने की आवश्यकता नहीं है। लेकिन IMO 'एनकैप्सुलेशन' या 'सूचना छिपाना' सिर्फ लोगों को बाहर रखने के लिए नहीं है, यह संगठन और संरचना का सवाल है: आपकी विकास परतों में भौतिक प्रणालियों की तरह ही आत्म-परिभाषित, स्पष्ट रूप से सीमांकित स्कोप और बॉर्डर होना चाहिए।
क्या कोई कृपया मुझे यहाँ एक ठोस व्याख्या के साथ मदद कर सकता है कि पायथन में स्पष्ट रूप से प्रवेश करने के बजाय पहुँच प्रतिबंध क्यों लगाया जाता है, एक भाषा जो अन्यथा एकदम सही लगती है?
संपादित करें: अब तक मैंने 3 प्रस्तावित उत्तर देखे हैं, और मुझे महसूस हुआ कि मेरे प्रश्न के 2 भाग हैं:
उदाहरण के लिए मुख्य शब्द क्यों नहीं हैं
private def myFunc(): dostuff....
IMO के बजाय बदसूरत और कठिन प्रकार अंडरस्कोर करने के लिए। लेकिन वह महत्वपूर्ण बिंदु नहीं है।
अधिक महत्वपूर्ण बात:
ये एक्सेस मॉडिफ़ायर केवल 'अनुशंसाएँ' या संकेत क्यों हैं और लागू नहीं किए गए हैं। बाद में बदलना मुश्किल होगा? 'संरक्षित ’को' पब्लिक’ में बदलना बहुत सरल है - और यदि आपके पास एक जटिल विरासत श्रृंखला है जो इसे कठिन बनाती है, तो आपके पास एक खराब डिज़ाइन है - आपके डिज़ाइन को एक भाषा सुविधा पर भरोसा करने के बजाय परिष्कृत किया जाना चाहिए जो इसे लिखना आसान बनाता है खराब संरचित कोड।
जब एक्सेस संशोधक लागू किया जाता है, तो आपका कोड स्वचालित रूप से कंपाइल किया जाता है - आप जानते हैं कि कुछ सेगमेंट स्कोप से बाहर हैं, इसलिए यदि आवश्यक हो तो आप को छोड़कर उनके साथ व्यवहार न करें। और, यदि आपका डिजाइन अच्छा नहीं है और आप अपने आप को लगातार अलग-अलग दायरे में चीजों को स्थानांतरित करते हुए पाते हैं, तो भाषा आपको अपने कृत्य को साफ करने में मदद कर सकती है।
जितना मैं पायथन से प्यार करता हूं, मुझे यह 2 वां बिंदु एक गंभीर कमी लग रही है। और मुझे इसके लिए एक अच्छा जवाब देखना बाकी है।
private def whatever
यह class x: def whatever(self): pass
है कि, के लिए एक शॉर्टकट है class x: pass; x.whatever = lambda self: pass
, इसलिए मूल रूप से, आपको असाइनमेंट के लिए एक निजी