में डेटा छिपाने के बारे में मुझे पता है कि कक्षा के गुण जो डबल अंडरस्कोर __
उपसर्ग द्वारा घोषित किए गए हैं, कक्षा परिभाषा के बाहर दिखाई दे सकते हैं या नहीं भी हो सकते हैं। चूंकि हम अभी भी उन गुणों को object._className__attrName
तक एक्सेस कर सकते हैं।पायथन कक्षा
class A:
def __init__(self):
self.a = 1
self.b = 2
----
----
self.z = 26
self.catch = 100
अब विशेषता catch
को छोड़कर सभी विशेषताओं की रक्षा के लिए, मैं उन्हें डबल अंडरस्कोर जो काफी गंदा है साथ घोषित करने के लिए है। क्या मेरी कक्षा परिभाषा में कोई तरीका है कि कक्षा के बाहर केवल self.catch
तक पहुंचा जा सकता है?
क्षमा करें अगर इसका उत्तर कहीं और या पहले चर्चा की गई है।
नहीं। हालांकि, जब तक कि आप वास्तव में पागल नहीं हो जाते हैं, तथ्य यह है कि कोई व्यक्ति * object._className__attrName 'का उपयोग करके ऑब्जेक्ट तक पहुंच सकता है, यह एक बड़ा सौदा नहीं है। आप वास्तव में लोगों को उन चरों तक पहुंचने से रोकना चाहते हैं जिन्हें वे आपके कोड का उपयोग करते समय नहीं करना चाहिए। Obfuscation उस लक्ष्य को प्राप्त करता है। – Chris
संभावित डुप्लिकेट [क्या पाइथन में कक्षाओं में 'निजी' चर है?] (Http://stackoverflow.com/questions/1641219/does-python-have-private-variables-in-classes) –
@ BjörnPollex, यह isn ' वह क्या पूछ रहा है। वह एक स्पष्ट "सार्वजनिक" ऑपरेटर की आवश्यकता चाहता है, विपरीत नहीं। –