গত সপ্তাহে আমরা শিখেছি কীভাবে Class ব্যবহার করে একটি হিরো ক্যারেক্টার তৈরি করতে হয়। কিন্তু ভেবে দেখো, তোমার গেমে যদি শুধু হিরো না থেকে ড্রাগন, উইজার্ড (জাদুকর) বা রোবট থাকে? সবারই তো নাম আর হেলথ (Health) থাকবে, কিন্তু তাদের আক্রমণ করার স্টাইল বা সুপারপাওয়ার হবে ভিন্ন।
আজকে আমরা শিখবো পাইথনের একটি দারুণ জাদুকরী নিয়ম, যার নাম ইনহেরিটেন্স (Inheritance) বা উত্তরাধিকার!
🧬 ইনহেরিটেন্স কী?
বাস্তব জীবনে যেমন আমরা আমাদের বাবা-মায়ের কাছ থেকে অনেক বৈশিষ্ট্য পাই (যেমন: চোখের রঙ বা হাসির ধরণ), কোডিংয়ের দুনিয়াতেও একটি ক্লাস অন্য একটি ক্লাসের সব গুণাবলী ধার করতে পারে।
- প্যারেন্ট ক্লাস (Parent Class): মূল জাদুর বাক্স, যার ভেতর বেসিক বৈশিষ্ট্যগুলো থাকে।
- চাইল্ড ক্লাস (Child Class): নতুন ক্লাস, যা প্যারেন্ট ক্লাসের সব কোড নিজে থেকেই পেয়ে যায় এবং চাইলে তার নিজস্ব কিছু নতুন জাদুকরী ক্ষমতা যোগ করতে পারে।
🎮 আজকের কোডিং প্রজেক্ট: ড্রাগন বনাম রোবট
চলো, আমরা একটি মূল GameCharacter ক্লাস বানাই। এরপর সেটি থেকে একটি Dragon এবং একটি Robot ক্লাস তৈরি করি।
Python
# এটি আমাদের প্যারেন্ট ক্লাস
class GameCharacter:
def __init__(self, name, health):
self.name = name
self.health = health
def introduce(self):
print(f"আমি {self.name}! আমার লাইফ পাওয়ার {self.health}।")
# এটি চাইল্ড ক্লাস (ব্র্যাকেটের ভেতর প্যারেন্ট ক্লাসের নাম দিতে হয়)
class Dragon(GameCharacter):
def fly(self):
print(f"{self.name} ডানা ঝাপটে আকাশে উড়ে গেল এবং আগুন ছুঁড়ল! 🔥")
class Robot(GameCharacter):
def laser_beam(self):
print(f"{self.name} চোখ থেকে লাল লেজার রশ্মি বের করল! ⚡")
# এবার ক্যারেক্টারগুলো তৈরি করি
fire_dragon = Dragon("অগ্নি ড্রাগন", 150)
metal_robot = Robot("রোবো-এক্স", 200)
# ম্যাজিক দেখো! introduce() ফাংশন ড্রাগন বা রোবট ক্লাসে না লিখলেও তারা সেটা ব্যবহার করতে পারছে!
fire_dragon.introduce()
fire_dragon.fly()
metal_robot.introduce()
metal_robot.laser_beam()
🧠 আজকের ছোট্ট চ্যালেঞ্জ (Challenge of the Week)
চ্যালেঞ্জ: ওপরের কোডটি দেখে তুমি নিজের মতো করে আরেকটি চাইল্ড ক্লাস তৈরি করো। ক্লাসটির নাম দাও
Wizard(জাদুকর)। তার একটি বিশেষ ক্ষমতা বা মেথড থাকবে, যেটির নাম হবেcast_spell()(জাদু করা)। কোডটি লিখে রান করে দেখাও তো কাজ করে কিনা!
পরবর্তী ধাপ: ২য় সপ্তাহের এই চমৎকার লেসনটির জন্য কি আমরা একটি আকর্ষণীয় ফিচার ইমেজ তৈরি করব, নাকি সরাসরি ৩য় সপ্তাহের (ফাইল হ্যান্ডলিং) টিউটোরিয়ালে চলে যাবো?
