পাইথন ক্লাসেস এবং অবজেক্ট (Python Classes and Objects)
পাইথন একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষা। এখানে প্রায় সমস্ত কোড ক্লাস (class) নামক কন্সট্রাক্ট (constract) ব্যবহার করে করা হয়। ক্লাস ব্যবহার করে একই রকম জিনিসপত্র একসাথে গুছিয়ে রাখা যায়।
পাইথনে মোটামুটি সবকিছুকে অবজেক্ট হিসেবে ধরে নেয়া হয়। একটি অবজেক্ট কিছু ডেটা (ভেরিয়েবল) এবং কিছু ফাংশনের একটি সংগ্রহ যা এই ডেটাগুলি নিয়ে কাজ করে। একটি ক্লাস সেই অবজেক্টের জন্য একটি ব্লুপ্রিন্ট।
আমরা ক্লাসকে একটি বাড়ির নকশা হিসেবে চিন্তা করতে পারি। বাড়িটি কত বড় হবে, কয়টি কক্ষ থাকবে, কয়তলা বিশিষ্ট হবে ইত্যাদি বাড়ির নকশাতে সব বলা থাকবে। নকশার উপর ভিত্তি করে একই রকম অনেক বাড়ি বানানো যাবে। এখানে নকশাটি হল ক্লাস, আর বাড়িগুলো হল অবজেক্ট।
আমরা একটি উদাহারন লক্ষ্য করি-
class House: height = 100 width = 50 def furnitures(): pass house_object_1 = House() house_object_2 = House()
ক্লাস নির্ধারণ এবং ক্লাস অবজেক্ট
class কীওয়ার্ড ব্যবহার করে সহজতম উপায়ে ক্লাস তৈরি করা যায়। উদাহরণস্বরূপ, একটি সাধারণ ফাঁকা ক্লাস তৈরি করা যাক যার কোনো কার্যকারিতা নেই।
class SimpleClass: pass
একটি অবজেক্ট একটি ক্লাসের একটি ইন্সটেন্স (instance)। আমরা একটি ক্লাসের অসংখ্য ইন্সটেন্স তৈরী করতে পারি। একটি অবজেক্টের কিছু বৈশিষ্ট্য রয়েছে, তা হল-
১। State: এটি অবজেক্টের অ্যাট্রিবিঊটগুলো দিয়ে নির্ধারিত হয়। এটি একটি অবজেক্টের বৈশিষ্ট্যও প্রতিফলন করে।
২। Behavior: এটি অবজেক্টের মেথডগুলো দিয়ে প্রকাশ করা হয়। এটি অবজেক্টের রেসপন্সকে প্রকাশ করে অন্য অবজেক্টগুলোর কাছে।
৩। Identity: এটি অবজেক্টের অনন্য (unique) নামকরণ করে এবং অন্যান্য অবজেক্টগুলোর সাথে রিলেশন গঠনে ভূমিকা রাখে।
ক্লাসকে কল করার মাধ্যমে তার অবজেক্ট তৈরী করা যায়।
class SimpleClass: pass simple_class_object = SimpleClass()
simple_class_object, SimpleClass এর একটি অবজেক্ট ইন্সটেন্স। এই অবজেক্ট ইন্সটেন্সের প্রিফিক্স দিয়ে আমরা ক্লাসের যেকোনো অ্যাট্রিবিঊটকে অ্যাক্সেস করতে পারব। ক্লাস অ্যাট্রিবিঊট ডাটা হতে পারে আবার ক্লাসের মেথডও হতে পারে। যেমন-
class Car: name = “BMW 7 Series” defmilage(self): milage = 7.96 return f“The milage of {self.name} is {milage} kmpl” car = Car() print(car.name) print(car.milage()) Output: BMW 7 Series The milage of BMW 7 Series is7.96 kmpl
ক্লাস কন্সট্রাক্টর (Constructor)
পাইথনে কন্সট্রাক্টর নির্ধারণ করা হয় __ init __() মেথড এর মাধ্যমে। এটি অন্যান্য ল্যাঙ্গুয়েজের মত ক্লাস কন্সট্রাক্টরের ভূমিকা পালন করে। ক্লাস অবজেক্টের স্টেট ইনিশিয়ালাইজ করার ক্ষেত্রে কন্সট্রাক্টর ব্যবহার করা হয়। ক্লাস মেথডের মত কন্সট্রাক্টরও কিছু সংখ্যক স্টেটমেন্ট ধরে রাখে এবং ক্লাস কলের সময় স্টেটমেন্টগুলো এক্সিকিউট হয়। অবজেক্ট কল করার সাথে সাথে এটি ইন্সটেন্সিয়েটেড হয়।
class Car: def __init__(self, name): self.name = name def name_of_car(self): return self.name car = Car(“BMW 7 Series”) print(car.name_of_car()) Output: BMW 7 Series
ক্লাস এবং ইন্সটেন্স ভ্যারিয়েবলস
ইনস্ট্যান্স ভেরিয়েবল হল এমন ভেরিয়েবল, যার মান একটি কনস্ট্রাক্টর বা মেথডের ভিতরে self দিয়ে লিখা হয়, যেখানে ক্লাস ভেরিয়েবল হল সেই ভেরিয়েবল যার মান ক্লাসে লিখা হয়।
class Car: # class 2. variables category = “luxarious car” def __init__(self, name, color): #instance valiables self.name = name self.color = color # class method def name_of_car(self): return self.name car = Car(“BMW 7 Series”, “black”) print(car.name_of_car()) Output: BMW 7 Series
আমরা সাধারণ মেথড ব্যবহার করেও ইন্সটেন্স ভ্যারিয়েবল সেট করতে পারি।
class Car: class Car: # class 2. variables category = “luxarious car” def __init__(self, name, color): #instance valiables self.name = name self.color = color # set instance variable through a function def setCylinder(self, no_of_cylinder=0): self.no_of_cylinder = no_of_cylinder # class method def name_of_car(self): return f“{self.name}, cylinder no: {self.no_of_cylinder}” car = Car(“BMW 7 Series”, “black”) car.setCylinder(12) print(car.name_of_car()) Output: BMW 7 Series, cylinder no: 12
সেলফ প্যারামিটার (self parameter)
ক্লাস মেথডে একটি অতিরিক্ত প্যারামিটার প্রথমে পাঠাতে হয়। যখন আমরা মেথড কল করি তখন আমরা এই প্যারামিটারের জন্য কোন মান দিই না, পাইথন এটি প্রদান করে। যদি আমাদের এমন একটি ক্লাস মেথড থাকে যা কোন আর্গুমেন্ট নেয় না, তখনও আমাদেরকে উক্ত মেথডে self প্যারামিটারটি পাস করতে হয়।
class Car: def __init__(self, name, color): self.name = name self.color = color # class method that does not have any argument #still, have to provide self def name_of_car(self): return f“{self.name}” car = Car(“BMW 7 Series”, “black”) print(car.name_of_car()) Output: BMW 7 Series
ক্লাসের স্পেশাল ফাংশন
ক্লাস ফাংশনগুলোর যেগুলো ডবল আন্ডারস্কোর __ দিয়ে শুরু হয় তাদের বিশেষ ফাংশন বলা হয় কারণ, এইসব ফাংশন গুলো ক্লাসের গুরুত্বপূর্ণ কিছু ফাংশনালিটি সম্পাদন করে থাকে।
অবজেক্ট এবং অ্যাট্রিবিউট ডিলিট
del স্টেটমেন্ট ব্যবহার করে যেকোন সময় অবজেক্টের যেকোন অ্যাট্রিবিউট ডিলিট করে ফেলা যায়।
class Car: def __init__(self, name, color): self.name = name self.color = color def name_of_car(self): return f“{self.name}” car = Car(“BMW 7 Series”, “black”) del car print(car.name_of_car()) Output: Traceback(most recent call last): File “”, line 11, in NameError: name ‘car’isnot defined