ডাবল আন্ডারস্কোর উপসর্গ
পাইথনে, আমরা অ্যাট্রিবিউটের নামের আগে ডবল আন্ডারস্কোর অর্থাৎ __ ব্যবহার করি এবং সেই অ্যাট্রিবিউটগুলি বাইরে সরাসরি অ্যাক্সেসযোগ্য/দৃশ্যমান হবে না। ডাবল আন্ডারস্কোর বৈশিষ্ট্যের নামকে ম্যাঙ্গেল করে। যাইহোক, সেই ভেরিয়েবলটি এখনও কিছু কৌশলী সিনট্যাক্স ব্যবহার করে অ্যাক্সেস করা যেতে পারে তবে এটি করা সাধারণত একটি ভাল ধারণা নয়। সম্পূর্ণ ব্যক্তিগত ভেরিয়েবলের জন্য ডাবল আন্ডারস্কোর ব্যবহার করা হয়।
পাইথন ডকুমেন্টেশন অনুযায়ী −
যদি আপনার ক্লাসটি সাবক্লাস করার উদ্দেশ্যে করা হয়, এবং আপনার কাছে এমন বৈশিষ্ট্য থাকে যেগুলি আপনি সাবক্লাসগুলি ব্যবহার করতে চান না, সেগুলিকে ডবল লিডিং আন্ডারস্কোর এবং কোন ট্রেলিং আন্ডারস্কোর দিয়ে নামকরণ বিবেচনা করুন৷ এটি পাইথনের নাম ম্যাংলিং অ্যালগরিদমকে আহ্বান করে, যেখানে ক্লাসের নামটি অ্যাট্রিবিউট নামের সাথে যুক্ত করা হয়। এটি অ্যাট্রিবিউট নামের সংঘর্ষ এড়াতে সাহায্য করে যদি সাবক্লাসে অসাবধানতাবশত একই নামের অ্যাট্রিবিউট থাকে।
উদাহরণ
নিচের কোডটি ডবল আন্ডারস্কোরের ব্যবহার দেখায়।
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, in <module> print (myObject.__hiddenVar) AttributeError: MyClass instance has no attribute '__hiddenVar'
উপরের প্রোগ্রামে, আমরা অবজেক্ট ব্যবহার করে ক্লাসের বাইরে লুকানো ভেরিয়েবল অ্যাক্সেস করার চেষ্টা করেছি এবং এটি একটি ব্যতিক্রম ছুড়ে দিয়েছে।