Magic Methods ও MRO
🧠 Python Advanced OOP: Magic Methods ও MRO (Method Resolution Order)
Python-এর Object Oriented Programming (OOP) এ Magic Methods এবং MRO (Method Resolution Order) খুবই গুরুত্বপূর্ণ ও Advanced বিষয়। এই দুটি কনসেপ্ট ভালোভাবে বুঝলে আপনি professional-level Python code লিখতে পারবেন।
✨ Magic Methods কী?
Magic Methods (বা Dunder Methods) হলো বিশেষ ধরনের method যেগুলো
__method__ ফরম্যাটে লেখা হয়।
Python নিজে থেকেই এগুলো কল করে।
কিছু Common Magic Methods
__init__→ Object initialize করতে__str__→ Object print করলে কী দেখাবে__repr__→ Debug representation__add__→+operator override__len__→len()function support
🔹 __init__ Method
__init__ method object তৈরি হওয়ার সময় automatic কল হয়।
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
s1 = Student("Rahim", 20)
print(s1.name, s1.age)
# Output:
# Rahim 20
🔹 __str__ Method
Object কে print() করলে কী দেখাবে তা __str__ method নির্ধারণ করে।
class Student:
def __init__(self, name):
self.name = name
def __str__(self):
return f"Student Name: {self.name}"
s = Student("Karim")
print(s)
# Output:
# Student Name: Karim
➕ Operator Overloading (__add__)
Magic Methods ব্যবহার করে Python operator-এর আচরণ পরিবর্তন করা যায়।
class Number:
def __init__(self, value):
self.value = value
def __add__(self, other):
return self.value + other.value
a = Number(10)
b = Number(20)
print(a + b)
# Output:
# 30
📏 __len__ Method
len() function ব্যবহার করার জন্য __len__ define করতে হয়।
class MyList:
def __init__(self, items):
self.items = items
def __len__(self):
return len(self.items)
obj = MyList([1, 2, 3, 4])
print(len(obj))
# Output:
# 4
🧬 MRO (Method Resolution Order) কী?
Multiple Inheritance থাকলে Python কোন class-এর method আগে ব্যবহার করবে, সেই order কে বলা হয় MRO। Python C3 Linearization algorithm ব্যবহার করে।
🔹 MRO Example
class A:
def show(self):
print("Class A")
class B(A):
def show(self):
print("Class B")
class C(A):
def show(self):
print("Class C")
class D(B, C):
pass
obj = D()
obj.show()
print(D.mro())
# Output:
# Class B
# [,
# ,
# ,
# ,
# ]
এখানে Python প্রথমে B class খুঁজেছে, তারপর C, তারপর A।
কেন MRO গুরুত্বপূর্ণ?
- Multiple inheritance conflict solve করে
- Predictable method calling নিশ্চিত করে
- Large codebase maintain সহজ করে
✅ Summary
- Magic Methods Python object কে powerful করে
- Operator overloading সম্ভব হয়
- MRO multiple inheritance এ method order ঠিক করে
- Advanced OOP বুঝতে এই টপিকগুলো অত্যন্ত গুরুত্বপূর্ণ
লোড হচ্ছে...
1. __init__ কী?
Constructor method।
2. __str__ কী করে?
Object এর string representation দেয়।
3. MRO কী?
Method Resolution Order।