Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📘 Lesson  ·  Lesson 53

self and __init__

self और __init__ क्या हैं

जब आप Python में class बनाते हैं, दो चीज़ें बार-बार आती हैं: __init__ और self। __init__ constructor है — यह नया object set करता है। self वो तरीका है जिससे method अपने object को दर्शाता है। साथ में ये हर object को अपना data रखने देते हैं।

💡 __init__ = object बनते ही चलता है। self = "यह ख़ास object"।

__init__ constructor

class Student:
    def __init__(self, name, roll):
        self.name = name
        self.roll = roll

s = Student("Aman", 12)
print(s.name, s.roll)
Aman 12

__init__ तब अपने-आप चलता है जब आप Student("Aman", 12) लिखते हैं। यह values पाकर उन्हें object पर self.name और self.roll से store करता है।

हर method को self क्यों चाहिए

class Student:
    def __init__(self, name):
        self.name = name
    def greet(self):
        return "Hi, " + self.name

s = Student("Aman")
print(s.greet())
Hi, Aman

हर method पहले self लेता है, ताकि उसे पता हो वो किस object पर काम कर रहा है। self.name उस object का अपना नाम पढ़ता है। जब आप s.greet() call करते हैं, Python s को self के रूप में अपने-आप भेजती है।

हर object का अपना data

a = Student("Aman")
b = Student("Diya")
print(a.greet())    # Hi, Aman
print(b.greet())    # Hi, Diya
Hi, Aman
Hi, Diya

चूँकि data self पर store होता है, हर object अपनी copy रखता है। a और b अलग students हैं अलग नामों के साथ — यही self का पूरा मक़सद है।

__init__ में default values

class Student:
    def __init__(self, name, marks=0):
        self.name = name
        self.marks = marks

s = Student("Aman")       # marks default 0
print(s.name, s.marks)
Aman 0

आप __init__ में parameter को default दे सकते हैं, तो वो optional हो जाता है। यहाँ caller न दे तो marks default 0 होता है।

आम गलतियाँ

  • Method में self भूलना। हर method को इसे पहले parameter के रूप में चाहिए।
  • Call में self pass करना। obj.greet() लिखिए, obj.greet(obj) नहीं — Python जोड़ती है।
  • self.name के बजाय name इस्तेमाल करना। self बिना, यह temporary local variable है।
  • गलत dunder spelling। यह __init__ है, हर तरफ़ दो underscores।

सारांश

  • __init__ constructor है — object बनते ही चलता है।
  • self का मतलब "यह object" है और हर method का पहला parameter है।
  • Data को self.attribute से store कीजिए ताकि हर object अपना रखे।
  • Method call करते समय Python self अपने-आप भेजती है।
  • आप __init__ parameters को default values दे सकते हैं।

आगे, classes बढ़ाइए inheritance और polymorphism से, या देखिए magic methods।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

Python में __init__ क्या है?
__init__ constructor है — एक ख़ास method जो object बनाते ही अपने-आप चलता है। यह object की शुरुआती values set करता है। जैसे, नए Student को बनते ही उसका नाम और roll number देना।
Python में self का क्या मतलब है?
self मौजूदा object को दर्शाता है — वो ख़ास जिस पर method काम कर रहा है। इससे आप उस object का अपना data store और पढ़ते हैं, जैसे self.name। यह हमेशा method का पहला parameter होता है।
self पहला parameter क्यों होना चाहिए?
जब आप obj.method() call करते हैं, Python अपने-आप object को पहले argument के रूप में भेजती है। तो method में उसे पाने को self होना चाहिए। इसे भूलना "missing argument" error देता है।
क्या method call करते समय self खुद pass करूँ?
नहीं। Python इसे अपने-आप pass करती है। आप obj.greet() लिखते हैं, obj.greet(obj) नहीं। आप self सिर्फ़ definition में लिखते हैं, कभी call में नहीं।
self.name और name में क्या अंतर है?
self.name object पर store हुआ attribute है और object के जीवित रहने तक रहता है। method के अंदर साधारण name एक local variable है जो method ख़त्म होते ही ग़ायब हो जाता है।
← Back to Python Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicInheritance & Polymorphism आपकी प्रगति: 53 / 66 (80%) · Lesson 54 / 66 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें