OOP Basics
Inheritance
class Derived(Base):
💡 Python inheritance parents se properties lena jaisa hai — jaise C++/Java mein, lekin syntax bahut simple hai: bas parent class ka naam parentheses mein likh do.
Inheritance syntax: class Derived(Base):. super() function se parent class ke methods (especially __init__) call kar sakte ho — bahut common pattern jab derived class apna kuch extra setup karna chahti hai, lekin parent ka setup bhi chalana zaroori hai.
Python multiple inheritance bhi support karta hai (C++ jaisa): class C(A, B):. Method Resolution Order (MRO) decide karta hai kis order mein methods search hote hain agar multiple parents mein same naam ho.
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print(f"{self.name} makes a sound")
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name) # parent ka __init__ call karo
self.breed = breed
def speak(self): # override
print(f"{self.name} says Woof!")
d = Dog("Rex", "Labrador")
d.speak() # "Rex says Woof!"
print(d.name) # "Rex" — parent se inherited🧬
Python inheritance parents se properties lena jaisa hai — jaise C++/Java mein, lekin syntax bahut simple hai: bas parent class ka naam parentheses mein likh do.
1 / 2
⚡ Quick Recap
- class Derived(Base): — simple inheritance syntax
- super() se parent class ke methods call karo
- Multiple inheritance supported hai — class C(A, B):
On this page (1 subtopics)
Jab multiple inheritance mein same-named method do parents mein ho, Python "MRO" (C3 linearization algorithm) se decide karta hai kaunsa version use hoga. ClassName.__mro__ se ye order dekh sakte ho.
class A:
def greet(self): print("A")
class B:
def greet(self): print("B")
class C(A, B): # A pehle likha gaya hai
pass
c = C()
c.greet() # "A" — MRO left-to-right search karta hai
print(C.__mro__) # (C, A, B, object) — search orderTip: MRO confusion se bachne ke liye, multiple inheritance ko simple rakho ya composition prefer karo (jaise C++ mein bhi recommend kiya jaata hai diamond problem se bachne ke liye).