অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজ হিসেবে পাইথন অবজেক্টের ওপর জোর দেয়। ক্লাস হলো ব্লুপ্রিন্ট যেন থেকে অবজেক্ট তৈরি হয়। পাইথনে প্রতিটি ক্লাসে অনেক অ্যাট্রিবিউট থাকতে পারে, ফাংশনও অ্যাট্রিবিউট হিসেবে থাকতে পারে।
ক্লাসের অ্যাট্রিবিউট অ্যাক্সেস
ক্লাসের অ্যাট্রিবিউট চেক এবং ম্যানিপুলেট করার জন্য পাইথনের অনেক বিল্ট-ইন মেথড ব্যবহার করা হয়:
getattr() - ক্লাসের অ্যাট্রিবিউট অ্যাক্সেস করার পাইথন মেথড।
hasattr() - ক্লাসে কোনো অ্যাট্রিবিউট আছে কিনা যাচাই করার পাইথন মেথড।
setattr() - ক্লাসে অতিরিক্ত অ্যাট্রিবিউট সেট করার পাইথন মেথড।
নিচের প্রোগ্রামে উপরের মেথডগুলো ব্যবহার করে ক্লাস অ্যাট্রিবিউট অ্যাক্সেস করা দেখানো হলো।
উদাহরণ
class StateInfo:
StateName = 'Telangana'
population = '3.5 crore'
def func1(self):
print("Hello from my function")
print(getattr(StateInfo, 'StateName'))
# অবজেক্টে অ্যাট্রিবিউট থাকলে True
print(hasattr(StateInfo, 'population'))
setattr(StateInfo, 'ForestCover', 39)
print(getattr(StateInfo, 'ForestCover'))
print(hasattr(StateInfo, 'func1'))আউটপুট
Telangana True 39 True
ক্লাসের মেথড অ্যাক্সেস
ক্লাসের মেথড অ্যাক্সেস করতে হলে ক্লাসকে অবজেক্টে ইনস্ট্যানশিয়েট করতে হয়। তারপর মেথডটিকে ক্লাসের ইনস্ট্যান্স মেথড হিসেবে অ্যাক্সেস করা যায়। এখানে self প্যারামিটার দিয়ে ইনস্ট্যান্স মেথড একই অবজেক্টের অ্যাট্রিবিউট এবং অন্যান্য মেথড অ্যাক্সেস করতে পারে।
উদাহরণ
class StateInfo:
StateName = 'Telangana'
population = '3.5 crore'
def func1(self):
print("Hello from my function")
print(getattr(StateInfo, 'StateName'))
print(hasattr(StateInfo, 'population'))
setattr(StateInfo, 'ForestCover', 39)
print(getattr(StateInfo, 'ForestCover'))
print(hasattr(StateInfo, 'func1'))
obj = StateInfo()
obj.func1()আউটপুট
Telangana True 39 True Hello from my function
এক ক্লাসের মেথড অন্য ক্লাস থেকে অ্যাক্সেস
এক ক্লাসের মেথড অন্য ক্লাস থেকে অ্যাক্সেস করতে হলে কলড ক্লাসের ইনস্ট্যান্স কলিং ক্লাসে পাস করতে হয়। নিচের উদাহরণে দেখানো হলো কিভাবে করা যায়।
উদাহরণ
class ClassOne:
def m_class1(self):
print("Method in class 1")
# কলিং ক্লাস ডিফাইন
class ClassTwo(object):
def __init__(self, c1):
self.c1 = c1
# কলিং মেথড
def m_class2(self):
Object_inst = self.c1()
Object_inst.m_class1()
# ClassOne অবজেক্ট ClassTwo-তে আর্গুমেন্ট হিসেবে পাস
obj = ClassTwo(ClassOne)
obj.m_class2()আউটপুট
Method in class 1