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 বুঝতে এই টপিকগুলো অত্যন্ত গুরুত্বপূর্ণ
🎯 এই টপিকগুলো আয়ত্ত করলে আপনি Python-এর Advanced OOP লেভেলে পৌঁছে যাবেন।
👼 Quiz
/

লোড হচ্ছে...

Interview Questions:

1. __init__ কী?

Constructor method।

2. __str__ কী করে?

Object এর string representation দেয়।

3. MRO কী?

Method Resolution Order।