ডেটা হাইডিং
পাইথনে, অ্যাট্রিবিউটের নামের আগে ডাবল আন্ডারস্কোর ব্যবহার করে সেগুলোকে অ্যাক্সেসযোগ্য/প্রাইভেট বা লুকানো হয়।
নিচের কোডটি দেখাচ্ছে কীভাবে __hiddenVar ভেরিয়েবলটি হিডেন থাকে।
উদাহরণ
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/~_1.py", line 12, inprint (myObject.__hiddenVar) AttributeError: MyClass instance has no attribute '__hiddenVar'
উপরের প্রোগ্রামে, আমরা অবজেক্ট ব্যবহার করে হিডেন ভেরিয়েবল ক্লাসের বাইরে থেকে অ্যাক্সেস করার চেষ্টা করলাম এবং এক্সেপশন পেলাম।
আমরা হিডেন অ্যাট্রিবিউটের মান একটি স্পেশাল সিনট্যাক্স ব্যবহার করে অ্যাক্সেস করতে পারি -
উদাহরণ
class MyClass:
__hiddenVar = 12
def add(self, increment):
self.__hiddenVar += increment
print (self.__hiddenVar)
myObject = MyClass()
myObject.add(3)
myObject.add (8)
print (myObject._MyClass__hiddenVar)
আউটপুট
15 23 23
প্রাইভেট মেথডগুলো ক্লাসের বাইরে থেকে অ্যাক্সেস করা যায়, কিন্তু সাধারণ কেসের মতো সহজে নয়। পাইথনে কিছুই সত্যিকারের প্রাইভেট নয়; ইন্টারন্যালি, প্রাইভেট মেথড এবং অ্যাট্রিবিউটের নামগুলো ম্যাংগল এবং আনম্যাংগল হয় ফ্লাই-ওন-দ-ফ্লাই যাতে দেওয়া নাম দিয়ে সেগুলো অ্যাক্সেস করা না যায়।