শ্রেণি বেসরকারী এবং মডিউল বেসরকারীদের মধ্যে বিভ্রান্তি থাকতে পারে ।
একটি মডিউল ব্যক্তিগত একটি আন্ডারস্কোর দিয়ে শুরু হয় আমদানি কমান্ডের ফর্মটি
ব্যবহার করার সময় এই জাতীয় উপাদানটি অনুলিপি করা হয় না from <module_name> import *
; এটি import <moudule_name>
সিনট্যাক্স ব্যবহার করে তবে আমদানি করা হয় ( বেন উইলহেলমের উত্তর দেখুন )
প্রশ্নের উদাহরণের একটি .__ নাম্বার থেকে কেবল একটি আন্ডারস্কোর সরান এবং এটি মডিউলগুলিতে প্রদর্শিত হবে না যা from a import *
সিনট্যাক্স ব্যবহার করে a.py আমদানি করে ।
একটি বর্গ ব্যক্তিগত দিয়ে শুরু হয় দুই আন্ডারস্কোর (ওরফে dunder অর্থাত ডি-ouble অধীনে স্কোর)
এই ধরনের একটি পরিবর্তনশীল এর নাম "mangled" 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 () শ্রেণীর উদাহরণ instance আপনি ডাবল আন্ডারস্কোর ব্যবহার করার সময় যা এই ব্যতিক্রম দেয়। আপনার ক্ষেত্রে যেখানে আপনি কোনও ক্লাস তৈরি করেন নি, আপনি কেবল একটি মডিউল তৈরি করেছেন। আরও দেখুন: স্ট্যাকওভারফ্লো