क्लास प्राइवेट और मॉड्यूल प्राइवेट के बीच कन्फ्यूजन हो सकता है ।
एक मॉड्यूल निजी एक अंडरस्कोर के साथ शुरू होता है आयात आदेश
के from <module_name> import *
रूप का उपयोग करते समय इस तरह के एक तत्व की नकल नहीं की जाती है ; हालाँकि यह import <moudule_name>
सिंटैक्स का उपयोग करते समय आयात किया जाता है ( बेन विल्हेम का जवाब देखें )
बस प्रश्न के उदाहरण के .__ संख्या से एक अंडरस्कोर हटा दें और यह उन मॉड्यूल्स में नहीं दिखाया जाएगा जो from a import *
सिंटैक्स का उपयोग करके थिंकपैड को आयात करते हैं।
एक वर्ग निजी के साथ शुरू होता है दो अंडरस्कोर (उर्फ दुंदर यानी डी-ouble अंडर स्कोर)
इस तरह के एक चर कि इसके नाम "घायल" classname आदि शामिल करने के लिए है
यह अभी भी घायल नाम के माध्यम से, वर्ग तर्क के बाहर पहुँचा जा सकता है।
यद्यपि नामकरण अनधिकृत पहुंच के खिलाफ हल्के रोकथाम उपकरण के रूप में काम कर सकता है, लेकिन इसका मुख्य उद्देश्य पूर्वजों वर्गों के वर्ग के सदस्यों के साथ संभावित नाम टकराव को रोकना है। एलेक्स मार्टेली के वयस्कों को सहमति देने के लिए मजाकिया लेकिन सटीक संदर्भ देखें क्योंकि वह इन चरों के संबंध में इस्तेमाल किए गए सम्मेलन का वर्णन करता है।
>>> class Foo(object):
... __bar = 99
... def PrintBar(self):
... print(self.__bar)
...
>>> myFoo = Foo()
>>> myFoo.__bar #direct attempt no go
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Foo' object has no attribute '__bar'
>>> myFoo.PrintBar() # the class itself of course can access it
99
>>> dir(Foo) # yet can see it
['PrintBar', '_Foo__bar', '__class__', '__delattr__', '__dict__', '__doc__', '__
format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__
', '__subclasshook__', '__weakref__']
>>> myFoo._Foo__bar #and get to it by its mangled name ! (but I shouldn't!!!)
99
>>>
>>> import fileinfo >>> m = fileinfo.MP3FileInfo() >>> m.__parse("/music/_singles/kairo.mp3") 1 Traceback (innermost last): File "<interactive input>", line 1, in ? AttributeError: 'MP3FileInfo' instance has no attribute '__parse'
fileinfo.MP3FileInfo () कक्षा का एक उदाहरण है। जब आप डबल अंडरस्कोर का उपयोग करते हैं तो यह अपवाद देता है। जबकि आपके मामले में, आपने एक वर्ग नहीं बनाया, आपने सिर्फ एक मॉड्यूल बनाया। इन्हें भी देखें: stackoverflow.com/questions/70528/…