এই পর্যন্ত সবকিছু ছিল প্রোসিডিউরাল — একটি স্ক্রিপ্ট উপর থেকে নিচে চলছে। অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) সম্পর্কিত ডেটা আর আচরণকে অবজেক্ট নামের একটি একক ইউনিটে একসাথে গ্রুপ করে, Python-এর নিজস্ব সিনট্যাক্সে।
একটি ক্লাস একটি ব্লুপ্রিন্ট; একটি অবজেক্ট এটি থেকে তৈরি একটি প্রকৃত instance — একটি স্থাপত্য পরিকল্পনা আর তা থেকে তৈরি একটি প্রকৃত বাড়ির একই সম্পর্ক।
class Student:
def __init__(self, name, course):
self.name = name
self.course = course
def introduce(self):
return f"Hi, I'm {self.name}, studying {self.course}."
student1 = Student("Priya", "Web Development")
print(student1.introduce()) # "Hi, I'm Priya, studying Web Development."__init__ হলো Python-এর কনস্ট্রাক্টর — Student(...) কল হলে এটি স্বয়ংক্রিয়ভাবে চলে। self মানে "এই নির্দিষ্ট অবজেক্ট" — Python এটাকে প্রতিটি মেথডে একটি স্পষ্ট প্রথম প্যারামিটার করে, কিছু ভাষা যেভাবে এটা হ্যান্ডেল করে তার মতো স্বয়ংক্রিয়ভাবে উপলব্ধ কিছু না রেখে।
student2 = Student("Amit", "Graphic Design")
print(student1.name) # still "Priya" — unaffected by student2
print(student2.name) # "Amit"Python প্রপার্টি আর মেথড দুটোর জন্যই একটি সাধারণ ডট ব্যবহার করে — মনে রাখার জন্য শুধু একটি অ্যাক্সেস সিনট্যাক্স আছে, অবজেক্ট বনাম বাকি সবকিছুর জন্য আলাদা আলাদা নয়:
print(student1.name) # property access
print(student1.introduce()) # method callএখন পর্যন্ত সবকিছু — self.name, self.course — একটি instance variable: প্রতিটি অবজেক্টের নিজস্ব আলাদা কপি। একটি class variable, __init__-এর ভেতরে না দিয়ে সরাসরি ক্লাস body-তে সংজ্ঞায়িত, প্রতিটি instance শেয়ার করে:
class Student:
school = "Learn Computer Academy" # class variable — one copy, shared by all
def __init__(self, name):
self.name = name # instance variable — separate per object
s1 = Student("Priya")
s2 = Student("Amit")
print(s1.school, s2.school) # both "Learn Computer Academy" — same shared valueপ্রতিটি instance দ্বারা সত্যিকারভাবে শেয়ার করা কিছুর জন্য (একটি ধ্রুবক, একটি শেয়ার করা কাউন্টার) একটি class variable ব্যবহার করুন আর প্রতি অবজেক্টে ভিন্ন হওয়া যেকোনো কিছুর জন্য একটি instance variable — যা, বাস্তবে, একটি ক্লাস যা ধরে রাখে তার বেশিরভাগ।
আরও কিছু সাথে সাথেই আসছে
পরের পাঠ সরাসরি এটার উপর ভিত্তি করে তৈরি, কভার করবে inheritance (একটি ক্লাস আরেকটির উপর ভিত্তি করে তৈরি) আর polymorphism (ভিন্ন ভিন্ন ক্লাস একই মেথড কলে নিজেদের মতো করে সাড়া দেওয়া)।