কম্পিউটার টিউটোরিয়াল

পাইথন ক্লাসে ডেটা হাইডিং কীভাবে কাজ করে?


ডেটা হাইডিং

পাইথনে, অ্যাট্রিবিউটের নামের আগে ডাবল আন্ডারস্কোর ব্যবহার করে সেগুলোকে অ্যাক্সেসযোগ্য/প্রাইভেট বা লুকানো হয়।

নিচের কোডটি দেখাচ্ছে কীভাবে __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, in 
print (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

প্রাইভেট মেথডগুলো ক্লাসের বাইরে থেকে অ্যাক্সেস করা যায়, কিন্তু সাধারণ কেসের মতো সহজে নয়। পাইথনে কিছুই সত্যিকারের প্রাইভেট নয়; ইন্টারন্যালি, প্রাইভেট মেথড এবং অ্যাট্রিবিউটের নামগুলো ম্যাংগল এবং আনম্যাংগল হয় ফ্লাই-ওন-দ-ফ্লাই যাতে দেওয়া নাম দিয়ে সেগুলো অ্যাক্সেস করা না যায়।


  1. পাইথনে উইকিপিডিয়া ডেটা এক্সট্র্যাক্ট করা

  2. পাইথনে নন-লিনিয়ার ডেটাকে মডেলে ফিট করার পদ্ধতি

  3. পাইথনে Matplotlib চার্টে লেজেন্ড যোগ করার টিউটোরিয়াল

  4. পাইথন ফাংশনে ভেরিয়েবল স্কোপ কীভাবে কাজ করে?