Python में self क्या है? | Explained Karo | Python OOP Hindi
Python में self क्या है?
पिछले lesson में हमने Class और Object का basic relationship समझा था। अब जब हम Class के अंदर methods (functions) लिखना शुरू करते हैं, तो वहाँ हर जगह एक शब्द बार-बार दिखता है — self। बहुत से beginners को यह समझ नहीं आता कि self आखिर है क्या और इसे हर जगह क्यों लिखना पड़ता है।
इस lesson में हम सिर्फ self को ही पूरी तरह, step-by-step समझेंगे। अगर आपने अभी Python Classes & Objects नहीं पढ़ा है, तो पहले उसे पढ़ना जरूरी है, क्योंकि self पूरी तरह उसी concept पर आधारित है। Examples खुद run करने के लिए हमारा Online Python Editor & Compiler use कर सकते हैं।
self पर है। Inheritance, Polymorphism, Encapsulation, Abstraction और दूसरे advanced OOP concepts को इस lesson में detail में नहीं पढ़ाया जाएगा — इन्हें आगे dedicated lessons में अलग-अलग practical examples के साथ समझाया जाएगा।
self क्या है?
self Python में Class के अंदर लिखे गए method का पहला parameter होता है, जो उसी Object को represent करता है जिसने उस method को call किया है।
सरल भाषा में — self का मतलब है "यह वाला Object", यानी जिस Object से method call हुआ है, उसी की तरफ इशारा।
Output:
यहाँ show_message(self) में लिखा self Python को बताता है कि यह method किसी Object पर काम करेगा।
self और Object का Relationship
self कोई fixed या predefined value नहीं है — यह हमेशा उसी Object को represent करता है, जिससे method को call किया गया है।
इसीलिए अगर दो अलग objects एक ही method को call करें, तो हर बार self अलग Object को represent करेगा।
Method में self क्यों लिखा जाता है?
Class के अंदर बने हर normal method में self को पहले parameter की तरह लिखना जरूरी है — ताकि Python को पता चल सके कि यह method किसी particular Object पर काम करेगा, न कि independently।
Output:
Python ने खुद student1 को method में भेजने की कोशिश की, लेकिन method में उसे पकड़ने के लिए कोई parameter ही नहीं था — इसलिए error आया।
Python Method Call करते समय self कैसे काम करता है?
जब हम object.method() लिखते हैं, तो Python internally इसे कुछ इस तरह समझता है:
Python student1 को अपने-आप पहले argument की तरह method में भेज देता है, जिसे method के अंदर self के नाम से receive किया जाता है। यही वजह है कि self को लिखना जरूरी है, भले ही call करते समय हम उसे manually कभी pass नहीं करते।
Current Object को self कैसे Represent करता है?
Output (जैसा):
दोनों lines में memory address बिल्कुल same है — यह साफ दिखाता है कि method के अंदर self असल में वही student1 Object है।
self.attribute क्या होता है?
self.attribute का मतलब है — current Object का यह particular data। इसी syntax से किसी Object में data set और access किया जाता है।
Output:
self.name = name ने दी गई value को current object (यहाँ student1) के साथ attach कर दिया, और self.name से उसे फिर से access किया गया।
Object के Data को self की मदद से Access करना
Output:
Method के अंदर self.marks के through हमें हमेशा उसी Object का data मिलता है, जिससे method को call किया गया था।
Multiple Objects के साथ self कैसे काम करता है?
यह self को समझने का सबसे जरूरी हिस्सा है — हर Object के लिए self अपने-आप उसी Object को represent करता है, इसलिए एक ही method अलग-अलग objects के लिए अलग-अलग data के साथ सही तरीके से काम करता है।
Output:
जब student1.show_name() call हुआ, तब self का मतलब student1 था। जब student2.show_name() call हुआ, तब self का मतलब student2 हो गया — same method, लेकिन हर बार सही object का data।
self और Normal Arguments में Difference
| self | Normal Argument |
|---|---|
| Automatically Python द्वारा भेजा जाता है | Manually call करते समय value देनी पड़ती है |
| हमेशा current Object को represent करता है | कोई भी data हो सकता है — number, string, आदि |
| Method call करते समय इसे खुद नहीं लिखते | Method call करते समय इसे देना पड़ता है |
| हमेशा पहला parameter होता है | किसी भी position पर हो सकता है |
set_marks(self, marks) में self अपने-आप मिल जाता है, लेकिन marks के लिए हमें call करते समय value देनी पड़ती है।
self को Default Argument क्यों कहा जाता है?
self को अक्सर "default argument" कहा जाता है, क्योंकि Python इसे method call करते समय अपने-आप, बिना किसी manual effort के भर देता है — programmer को इसे explicitly pass करने की जरूरत कभी नहीं पड़ती।
self कोई Python का reserved keyword नहीं है — technically आप इसकी जगह कोई और नाम भी रख सकते हैं। लेकिन self एक इतनी मजबूत convention है कि लगभग हर Python developer इसी नाम का इस्तेमाल करता है, ताकि code हर जगह आसानी से समझ आए।
Practical Car Example
Output:
हर car अपनी details self के through अलग से रखती और दिखाती है, भले ही दोनों एक ही Car Class से बनी हों।
Practical Student Example
Output:
Common Beginner Mistakes
बिना self. लगाए, value सिर्फ method के अंदर temporary रहती है — Object का permanent data नहीं बनती।
Technically self की जगह कोई और नाम काम कर सकता है, लेकिन ऐसा करने से code अजीब और non-standard लगने लगता है। Beginners को हमेशा self नाम ही इस्तेमाल करना चाहिए।
VS Code में Practical Python Coding
अब इसे खुद VS Code में try करते हैं। एक नई file self_demo.py बनाइए और यह code लिखिए:
File save करके VS Code के Terminal में इसे run कीजिए।
Terminal में Output
दोनों results अलग-अलग हैं, क्योंकि हर बार self अपने object (student1 या student2) के data के साथ काम कर रहा था।
Exercise ?
जब हम student1.show_name() call करते हैं, तो Python method के अंदर self को किस value से भरता है?
Coding Challenge
अब खुद अपने VS Code या Online Python Editor में यह challenge solve कीजिए:
- एक
BookClass बनाइए जिसमेंset_details(self, title, price)औरshow_details(self)नाम के दो methods हों। set_details()के अंदरself.titleऔरself.priceset कीजिए।- उस Class से दो अलग objects —
book1औरbook2— बनाइए, और हर एक में अलग details भरिए। - दोनों books की details
show_details()से अलग-अलग print कीजिए। - खुद से सोचिए — अगर
selfकिसी method से हटा दें, तो क्या error आएगा? फिर code में actually हटाकर test कीजिए।
Quick Revision
| Concept | मतलब |
|---|---|
| self | Current Object को represent करने वाला पहला parameter |
| self.attribute | Current Object का particular data |
| Automatic Passing | object.method() कहने पर Python खुद object को self में भेजता है |
| Default Argument | self को manually pass नहीं करना पड़ता |
FAQ
Python में self क्या है?
self Class के method का पहला parameter है, जो उसी Object को represent करता है जिससे method को call किया गया है।
self को manually pass क्यों नहीं करना पड़ता?
क्योंकि Python object.method() को internally Class.method(object) की तरह call करता है — इसलिए object अपने-आप पहले argument की तरह method में चला जाता है, जिसे self के नाम से receive किया जाता है।
self और normal argument में क्या फर्क है?
self automatically Python द्वारा भरा जाता है और हमेशा current object को represent करता है, जबकि normal arguments को method call करते समय manually value देनी होती है।
क्या self की जगह कोई और नाम इस्तेमाल कर सकते हैं?
Technically हाँ, लेकिन ऐसा करना एक बहुत strong convention को तोड़ना है। लगभग हर Python developer self नाम ही इस्तेमाल करता है, इसलिए beginners को भी यही नाम इस्तेमाल करना चाहिए।
अगर method में self न लिखें तो क्या होगा?
Python object को method में भेजने की कोशिश करेगा, लेकिन उसे पकड़ने के लिए कोई parameter नहीं होगा, जिससे TypeError आएगा।
Summary
self = "यह वाला Object", यानी जिस Object से method call हुआ है, उसी का representation।
इस lesson में आपने सीखा कि self क्या है, यह current Object को कैसे represent करता है, method में इसे क्यों लिखना पड़ता है, self.attribute से Object का data कैसे access और set होता है, और multiple objects के साथ self कैसे अलग-अलग तरीके से काम करता है।
self को अच्छी तरह समझ लेने के बाद, Python OOP के आगे के concepts — __init__, Constructor, Inheritance — समझना काफी आसान हो जाएगा। अब ऊपर दिया गया coding challenge खुद VS Code या Online Editor में solve करें।
Related Articles
Python code likho, run karo aur practice karo — directly browser mein.

कोई टिप्पणी नहीं:
एक टिप्पणी भेजें