Python Academy · पाठ

इंस्टेंस विधियाँ और self

ऐसी विधियाँ लिखें जो ऑब्जेक्ट के अपने डेटा पर काम करें।

पाठ 3, कुल 4 में से14 चरण

इंस्टेंस विधियाँ और self, CoddyKit पर Python Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Python Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

परिचय

इंस्टेंस मेथड किसी विशिष्ट ऑब्जेक्ट के डेटा पर काम करते हैं और उसके एट्रिब्यूट को एक्सेस तथा संशोधित करने के लिए self का उपयोग करते हैं।

इंस्टेंस मेथड परिभाषित करना

क्लास के अंदर def method(self): एक इंस्टेंस मेथड होता है। इसे पहला आर्ग्युमेंट (self) के रूप में ऑब्जेक्ट प्राप्त होता है।
class Circle:
    def __init__(self, r): self.r = r
    def area(self):
        import math
        return math.pi * self.r**2
print(Circle(5).area())

मेथड कॉल करना

obj.method() वास्तव में ClassName.method(obj) लिखने का सुविधाजनक रूप है। पाइथन obj को self के रूप में अपने-आप पास करता है।
class Dog:
    def __init__(self, name): self.name = name
    def bark(self): print(f'{self.name} says Woof!')
Dog('Rex').bark()

self लौटाने वाले मेथड

self लौटाने से मेथड चेनिंग संभव होती है: builder.set_name('x').set_age(3).build().
class Builder:
    def __init__(self): self.data = {}
    def set(self, k, v):
        self.data[k] = v
        return self
    def build(self): return self.data
result = Builder().set('x',1).set('y',2).build()
print(result)

प्राइवेट मेथड (परंपरा)

आंतरिक उपयोग का संकेत देने के लिए नाम के आगे _ लगाएँ। नाम के आगे __ लगाने पर नेम मैंगलिंग होती है: _ClassName__method।
class Account:
    def __init__(self, bal): self._bal = bal
    def _validate(self, amount): return amount > 0
    def deposit(self, amount):
        if self._validate(amount):
            self._bal += amount
a = Account(100)
a.deposit(50)
print(a._bal)

मेथड के रूप में प्रॉपर्टी

@property किसी मेथड को आसानी से पढ़े जा सकने वाले एट्रिब्यूट में बदल देता है। इसे एक्सेस करते समय कोष्ठक लगाने की आवश्यकता नहीं होती।
class Circle:
    def __init__(self, r): self.r = r
    @property
    def diameter(self): return self.r * 2
c = Circle(5)
print(c.diameter)  # no ()

स्थिति बदलना

जो मेथड self के एट्रिब्यूट को संशोधित करते हैं, वे ऑब्जेक्ट की स्थिति बदल देते हैं। मेथड का उद्देश्य स्पष्ट रखें: क्वेरी या कमांड।
class Stack:
    def __init__(self): self.items = []
    def push(self, x): self.items.append(x)
    def pop(self): return self.items.pop()
    def peek(self): return self.items[-1]
s = Stack()
s.push(1); s.push(2)
print(s.pop(), s.peek())

ऑब्जेक्ट की तुलना

डिफ़ॉल्ट रूप से == पहचान की तुलना करता है। मान के आधार पर तुलना करने के लिए __eq__ लागू करें।
class Point:
    def __init__(self, x, y): self.x,self.y=x,y
    def __eq__(self, other): return self.x==other.x and self.y==other.y
print(Point(1,2)==Point(1,2))

इटरेशन प्रोटोकॉल

किसी क्लास को इटरेबल बनाने के लिए __iter__ और __next__ लागू करें, ताकि उसे for लूप में उपयोग किया जा सके।
class Countdown:
    def __init__(self, n): self.n = n
    def __iter__(self): return self
    def __next__(self):
        if self.n <= 0: raise StopIteration
        self.n -= 1; return self.n + 1
print(list(Countdown(3)))

कॉन्टेक्स्ट मैनेजर प्रोटोकॉल

किसी क्लास को with कथनों में उपयोग करने योग्य बनाने के लिए __enter__ और __exit__ लागू करें।
class Timer:
    def __enter__(self):
        import time
        self.start = time.time()
        return self
    def __exit__(self, *args):
        import time
        print(f'elapsed: {time.time()-self.start:.3f}s')
with Timer(): pass

मेथड बनाम फ़ंक्शन

क्लास के माध्यम से एक्सेस करने पर Dog.bark एक साधारण फ़ंक्शन होता है। इंस्टेंस के माध्यम से d.bark एक बाउंड मेथड होता है और self पहले से भरा होता है।
class Dog:
    def bark(self): print('woof')
print(type(Dog.bark))
print(type(Dog().bark))

त्वरित जाँच

मेथड चेनिंग क्या है और इसे समर्थन देने के लिए मेथड को क्या लौटाना चाहिए?

पुनरावलोकन

इंस्टेंस मेथड: def m(self)। obj.m() के रूप में कॉल करें। चेनिंग के लिए self लौटाएँ। __eq__/__iter__/__enter__/__exit__ प्रोटोकॉल लागू करते हैं। _ प्रीफ़िक्स आंतरिक उपयोग का संकेत देता है।

आगे बढ़ते रहें

बहुत बढ़िया! अगले कॉन्सेप्ट में महारत हासिल करने के लिए आगे बढ़ते रहें।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Python सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
76
पाठ
320

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

क्या “इंस्टेंस विधियाँ और self” पाठ निःशुल्क है?

हाँ—“इंस्टेंस विधियाँ और self” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Python Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“इंस्टेंस विधियाँ और self” में मैं क्या सीखूँगा?

ऐसी विधियाँ लिखें जो ऑब्जेक्ट के अपने डेटा पर काम करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Python Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Python Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Python Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“इंस्टेंस विधियाँ और self” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Python Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Python Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. क्लास और __init__ विधि
  2. इंस्टेंस बनाम क्लास एट्रिब्यूट
  3. इंस्टेंस विधियाँ और self
  4. मैजिक विधियाँ: __str__ और __repr__
← Python Academy पर वापस जाएँ