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

পাইথন ক্লাসে পাবলিক এবং প্রাইভেট ভেরিয়েবল কী কী?


পাবলিক ভেরিয়েবল

পাইথন আমাদের যেকোনো ভেরিয়েবল অ্যাক্সেস করতে বা যেকোনো মেম্বার মেথড কল করতে বাধা দেয় না।

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

উদাহরণ

class Mug:
    def __init__(self):
        self.color = None
        self.content = None
    def fill(self, beverage):
        self.content = beverage
    def empty(self):
        self.content = None
brownMug = Mug()
brownMug.color = "brown"
print brownMug.empty()
print brownMug.fill('tea')
print brownMug.color
print brownMug.content

কোডের সকল ভেরিয়েবল এবং মেথড ডিফল্টভাবে পাবলিক।

যখন আমরা আমাদের ডেটা মেম্বারকে প্রাইভেট ডিক্লেয়ার করি, তখন আমরা মানে কেউ ক্লাসের বাইরে থেকে সেটি অ্যাক্সেস করতে পারবে না। এখানে পাইথন একটি টেকনিক সাপোর্ট করে যাকে নাম্যাংলিং (name mangling) বলা হয়। এই ফিচারটি কমপক্ষে দুটি আন্ডারস্কোর প্রিফিক্স এবং সর্বোচ্চ একটি আন্ডারস্কোর সাফিক্স যেন যে মেম্বার নামগুলোকে _-এ রূপান্তর করে। তাই আমাদের মেম্বারকে প্রাইভেট করতে হলে নিচের উদাহরণটি দেখুন -

উদাহরণ

class Cup:
    def __init__(self, color):
        self.__content = None  # private variable
    def fill(self, beverage):
        self.__content = beverage
    def empty(self):
        self.__content = None

এখন আমাদের কাপ শুধু fill() এবং empty() মেথড ব্যবহার করে ভরা ও খালি করা যাবে। মনে রাখবেন, আপনি যদি বাইরে থেকে __content অ্যাক্সেস করার চেষ্টা করেন, তাহলে এরর পাবেন। কিন্তু আপনি এভাবে কিছু এক্সেস করতে পারেন -

redCup = Cup("red")
redCup._Cup__content = "tea"

  1. পাইথনে ইনহেরিটেন্স (Inheritance)

  2. পাইথনে ক্যারেক্টার ক্লাস অপারেশন কী?

  3. পাইথন ২.x এবং ৩.x ভার্সনের পার্থক্যগুলো কী?

  4. পাইথন ২.৭.x এবং পাইথন ৩.x-এর মধ্যে মূল পার্থক্য