खास मेथड
खास मेथड बैज को यह ताकत देता है कि print या len के सामने वह खुद जवाब दे। पहले प्रोग्राम में print(guest) स्क्रीन पर badge mira लिखता है, और ऐसा str के चलने से होता है। आप guest.str() कहीं नहीं लिखते; print(guest) ही उसे चला देता है। नाम mira एक Badge में रखा जाता है, कोई पैकेज इंस्टॉल नहीं होता और कोई फ़ोल्डर नहीं बनता। Badge("mira") लिखते ही init चलता है, और वहाँ self वही बैज है। str शब्द लौटाता है, उन्हें स्क्रीन तक print पहुँचाता है। badge और mira के बीच एक खाली जगह रहती है।
class Badge:
def __init__(self, name):
self.name = name
def __str__(self):
return "badge " + self.name
guest = Badge("mira")
print(guest)
स्क्रीन पर बस एक पंक्ति आती है: badge mira। रखा हुआ नाम mira है, और आगे का शब्द badge उसमें str जोड़ता है। उस पंक्ति को लिखता print है। अगर इस प्रोग्राम में print न होता, तो स्क्रीन खाली रहती, क्योंकि शब्द लौटाना और उन्हें लिखना दो अलग बातें हैं। guest.str() प्रोग्राम में नहीं है; print(guest) इतना ही काफ़ी है। जिस बैज में str नहीं होता, वह badge mira नहीं लिखता। तब जो पंक्ति आती है, उसमें क्लास का नाम और मेमोरी में बैज का पता होता है। None नहीं लिखा जाता।
class Badge:
def __init__(self, name):
self.name = name
def __len__(self):
return len(self.name)
guest = Badge("mira")
print(len(guest))
दूसरा प्रोग्राम अलग है। उसकी स्क्रीन पर पूर्णांक 4 आता है; badge mira नहीं और mira भी नहीं। उसमें len है, जो len(self.name) लौटाता है, और print(len(guest)) उसे लिखता है। mira में चार अक्षर हैं: m, i, r, a। इसीलिए 4 आता है, दशमलव बिंदु के बिना। रखे हुए नाम में कोई खाली जगह भी नहीं है। इस प्रोग्राम में str नहीं बनाया गया, इसलिए यह badge mira लिखने की कोशिश नहीं करता। अगर len न होता, तो len(guest) पर प्रोग्राम रुक जाता। इस रुकने का नाम TypeError है। None नहीं लिखा जाता और प्रोग्राम आगे नहीं बढ़ता। ऐसी कोई पंक्ति प्रोग्राम में है ही नहीं।
📊 लिखा क्या, दिखा क्या
| आप क्या लिखते हैं | स्क्रीन पर क्या आता है |
|---|---|
| print(guest) | badge mira |
| print(len(guest)) | 4 |
| __len__ के बिना len(guest) | प्रोग्राम रुक जाता है |
अगला पन्ना एक ऑब्जेक्ट को दूसरे ऑब्जेक्ट के भीतर रखता है। यह पन्ना सिर्फ़ mira नाम के एक बैज पर दो खास मेथड दिखाता है।
बैज के दो जवाब, एक नज़र में
print(guest) का नतीजा badge mira है, क्योंकि str चला। print(len(guest)) का नतीजा 4 है, क्योंकि len चला; mira में इतने ही अक्षर हैं। इन खास नामों के आगे कोष्ठक अलग से नहीं जोड़ते। अगला पन्ना एक ऑब्जेक्ट को दूसरे ऑब्जेक्ट के भीतर रखता है।
🧠 अपने ज्ञान की परीक्षा करें
अपने ज्ञान की परीक्षा करें
इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं
📝 निर्देश
- हर प्रश्न को ध्यान से पढ़ें
- हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
- आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
- आपकी प्रगति शीर्ष पर दिखाई जाएगी