Lesson — OOP
DOUBLE-UNDERSCORE
KA JAADU.
print(obj), len(obj), a + b — apni class ke liye ye sab tum sikha sakte ho. Magic methods se object smart banta hai.
WHY: print(Bill) me kachra kyun
Apni class ka object print karo to <__main__.Bill object at 0x...> aata hai — bekaar. Magic methods (double-underscore wale) Python ko sikhate hain ki tumhare object ke saath print, len, + kya karein.
python▶ Run
class Bill:
def __init__(self, items):
self.items = items
def __str__(self):
return f"Bill: {len(self.items)} items"
def __len__(self):
return len(self.items)
b = Bill(["doodh", "bread"])
print(b) # Bill: 2 items
print(len(b)) # 2__STR__
print(obj) kya dikhaye — readable naam.
__LEN__
len(obj) ka jawab.
__ADD__ / __EQ__
+ aur == apne hisaab se.
HOW: dunder likhna
Naam fix hain — __str__, __len__, __add__(self, other), __eq__. Python khud bulata hai jab tum print/len/+ use karte ho. Tumhe sirf method likhna hai.
python▶ Run
class Wallet:
def __init__(self, cash):
self.cash = cash
def __add__(self, other):
return Wallet(self.cash + other.cash)
w = Wallet(100) + Wallet(50)
print(w.cash) # 150Try it: cart jodo__add__ badal kar dekho
Run Python dabayein
Quick check
print(obj) readable banane wala magic method kaun sa hai?
str wala dunder — print isi ko bulata hai.
Common mistakes
__str__me print karna return ki jagah — return string chahiye.- Naam galat likhna (
_str_) — double underscore dono side must. - Har method me magic dhoondhna — normal methods normal naam se.
Dunder samajh aaya?
Ab dabbe ke andar dabba — inner classes dekho.