ডাবল আন্ডারস্কোর প্রিফিক্স
পাইথনে, আমরা অ্যাট্রিবিউটের নামের আগে ডাবল আন্ডারস্কোর অর্থাৎ __ ব্যবহার করি এবং تلك অ্যাট্রিবিউটগুলো সরাসরি অ্যাক্সেসযোগ্য বা দৃশ্যমান হয় না। ডাবল আন্ডারস্কোর অ্যাট্রিবিউটের নাম ম্যাং글 (mangle) করে। তবে, সেই ভেরিয়েবলকে কিছু ট্রিকি সিনট্যাক্স ব্যবহার করে এখনও অ্যাক্সেস করা যায় কিন্তু এটি সাধারণত ভালো আইডিয়া নয়। ডাবল আন্ডারস্কোর ফুলি প্রাইভেট ভেরিয়েবলের জন্য ব্যবহার হয়।
পাইথন ডকুমেন্টেশন অনুযায়ী -
যদি আপনার ক্লাস সাবক্লাস করার জন্য ইণ্টেন্ডেড থাকে, এবং আপনার এমন অ্যাট্রিবিউট থাকে যেগুলো আপনি সাবক্লাসে ব্যবহার করতে চান না, তবে সেগুলোর নাম ডাবল লিডিং আন্ডারস্কোর এবং কোনো ট্রেলিং আন্ডারস্কোর ছাড়া দিন। এটি পাইথনের নাম্যাংলিং অ্যালগরিদমইনভোক করে, যেখানে ক্লাসের নাম অ্যাট্রিবিউট নামের মধ্যে ম্যাংগল হয়। এটি অ্যাট্রিবিউট নামের কollision এড়াতে সাহায্য করে যদি সাবক্লাস অসাবধানতাবশত একই নামের অ্যাট্রিবিউট রাখে।
উদাহরণ
নিচের কোডটি ডাবল আন্ডারস্কোরের ব্যবহার দেখাচ্ছে।
class MyClass:
__hiddenVar = 0
def add(self, increment):
self.__hiddenVar += increment
print (self.__hiddenVar)
myObject = MyClass()
myObject.add(3)
myObject.add (8)
print (myObject.__hiddenVar)
আউটপুট
3 Traceback (most recent call last): 11 File "C:/Users/TutorialsPoint1/.PyCharmCE2017.2/config/scratches/scratch_1.py", line 12, inprint (myObject.__hiddenVar) AttributeError: MyClass instance has no attribute '__hiddenVar'
উপরের প্রোগ্রামে, আমরা অবজেক্ট ব্যবহার করে হিডেন ভেরিয়েবল ক্লাসের বাইরে থেকে অ্যাক্সেস করার চেষ্টা করলাম এবং এক্সেপশন পেলাম।