প্রাইভেট অ্যাট্রিবিউট কি?
পাইথনে প্রাইভেট অ্যাট্রিবিউট হলো এমন ভ্যারিয়েবল বা ফাংশন যা ক্লাসের বাইরের থেকে সরাসরি এক্সেস করা যায় না। প্রাইভেট অ্যাট্রিবিউট ব্যবহারের মূল উদ্দেশ্য হলো ডেটাকে গোপন রাখা এবং ক্লাসের বাইরে থেকে এর পরিবর্তন প্রতিরোধ করা।
পাইথনে প্রাইভেট অ্যাট্রিবিউট সাধারণত ডাবল আন্ডারস্কোর __ দিয়ে শুরু হয়।
প্রাইভেট অ্যাট্রিবিউটের ব্যবহার
১. ক্লাসের মধ্যে প্রাইভেট অ্যাট্রিবিউট তৈরি:
class Person:
def __init__(self, name, age):
self.name = name # পাবলিক অ্যাট্রিবিউট
self.__age = age # প্রাইভেট অ্যাট্রিবিউট
def display_info(self):
print(f"Name: {self.name}, Age: {self.__age}")
# একটি অবজেক্ট তৈরি করে দেখি
person1 = Person("Rahim", 30)
person1.display_info() # Output: Name: Rahim, Age: 30
২. প্রাইভেট অ্যাট্রিবিউট সরাসরি এক্সেস করার চেষ্টা:
print(person1.name) # এটি কাজ করবে, কারণ name পাবলিক
print(person1.__age) # এটিতে এরর হবে, কারণ __age প্রাইভেট
কেন প্রাইভেট অ্যাট্রিবিউট দরকার?
ক্লাসের ভেতরের ডেটা যাতে বাইরের থেকে পরিবর্তন করা না যায়, সেই নিশ্চয়তা দিতে প্রাইভেট অ্যাট্রিবিউট ব্যবহার করা হয়। উদাহরণস্বরূপ:
person1.__age = 35 # এটি ক্লাসের বাইরে থেকে পরিবর্তন করা যাবে না
প্রাইভেট অ্যাট্রিবিউট অ্যাক্সেস করার উপায়
যদিও সরাসরি প্রাইভেট অ্যাট্রিবিউট অ্যাক্সেস করা যায় না, কিন্তু পাইথনে একটি বিশেষ কনভেনশন দিয়ে এটা সম্ভব। প্রাইভেট অ্যাট্রিবিউটের আসল নাম হলো _ClassName__attributeName। যেমন:
print(person1._Person__age) # Output: 30
তবে, এই কনভেনশনটি ব্যবহারের পরিবর্তে প্রাইভেট অ্যাট্রিবিউটের জন্য গেটার এবং সেটার মেথড ব্যবহার করা ভালো।
গেটার এবং সেটার দিয়ে প্রাইভেট অ্যাট্রিবিউট অ্যাক্সেস
গেটার এবং সেটার তৈরি:
class Person:
def __init__(self, name, age):
self.name = name
self.__age = age
# গেটার
def get_age(self):
return self.__age
# সেটার
def set_age(self, age):
if age > 0:
self.__age = age
else:
print("Age must be positive!")
# অবজেক্ট তৈরি
person1 = Person("Karim", 25)
# গেটার ব্যবহার করে বয়স দেখানো
print(person1.get_age()) # Output: 25
# সেটার দিয়ে বয়স আপডেট
person1.set_age(30)
print(person1.get_age()) # Output: 30
সংক্ষেপে:
- প্রাইভেট অ্যাট্রিবিউট হলো এমন অ্যাট্রিবিউট যা ক্লাসের বাইরে থেকে সরাসরি এক্সেস করা যায় না।
- ডাবল আন্ডারস্কোর (
__) দিয়ে প্রাইভেট অ্যাট্রিবিউট শুরু হয়। - গেটার এবং সেটার মেথডের মাধ্যমে প্রাইভেট অ্যাট্রিবিউট অ্যাক্সেস এবং পরিবর্তন করা যায়।
- ক্লাসের ভেতরের ডেটা নিরাপদ রাখতে এবং ভুল এন্ট্রি এড়াতে প্রাইভেট অ্যাট্রিবিউট ব্যবহৃত হয়।