পাবলিক ভেরিয়েবল
পাইথন আমাদের যেকোনো ভেরিয়েবল অ্যাক্সেস করতে বা যেকোনো মেম্বার মেথড কল করতে বাধা দেয় না।
পাইথনে সকল ভেরিয়েবল এবং মেথড ডিফল্টভাবে পাবলিক। তাই যখন আমরা কোনো ভেরিয়েবল বা মেথড পাবলিক করতে চাই, তখন আমরা কিছু করি না। নিচের উদাহরণটি দেখুন -
উদাহরণ
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"