Python Academy · पाठ

इंस्टेंस बनाम क्लास एट्रिब्यूट

प्रत्येक ऑब्जेक्ट के डेटा और साझा क्लास-स्तरीय डेटा में अंतर समझें।

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

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

परिचय

इंस्टेंस और क्लास एट्रिब्यूट के बीच का अंतर समझने से सूक्ष्म बग रुकते हैं और साझा स्थिति का कुशल उपयोग संभव होता है।

क्लास एट्रिब्यूट

क्लास Dog: legs = 4 — legs सभी इंस्टेंस के बीच साझा होता है। इसे Dog.legs या dog.legs के रूप में एक्सेस करें।
class Dog:
    legs = 4
print(Dog.legs)
print(Dog().legs)

इंस्टेंस एट्रिब्यूट

__init__ में self.name = name हर इंस्टेंस के लिए अलग होता है। हर Dog का अपना name होता है।
class Dog:
    def __init__(self, name):
        self.name = name
d1 = Dog('Rex')
d2 = Dog('Buddy')
print(d1.name, d2.name)

एट्रिब्यूट खोज क्रम

पाइथन पहले इंस्टेंस __dict__ में, फिर क्लास __dict__ में और उसके बाद बेस क्लास में जाँच करता है। इंस्टेंस एट्रिब्यूट क्लास एट्रिब्यूट को छिपा देते हैं।
class C:
    x = 10
c = C()
c.x = 99  # instance shadows class attr
print(c.x)  # 99
print(C.x)  # 10

म्यूटेबल क्लास एट्रिब्यूट का जाल

क्लास C: items = [] — सभी इंस्टेंस एक ही सूची साझा करते हैं। एक इंस्टेंस में append करने से सभी प्रभावित होते हैं!
class C:
    items = []
C.items.append(1)
print(C().items)  # [1] — shared!

म्यूटेबल एट्रिब्यूट की समस्या हल करना

आरंभीकरण को __init__ में ले जाएँ: def __init__(self): self.items = [] हर इंस्टेंस को अपनी अलग सूची मिलती है।
class C:
    def __init__(self):
        self.items = []
c1 = C(); c2 = C()
c1.items.append(1)
print(c1.items, c2.items)

__dict__ का निरीक्षण

obj.__dict__ इंस्टेंस एट्रिब्यूट की डिक्शनरी है। Class.__dict__ क्लास एट्रिब्यूट की डिक्शनरी है।
class Dog:
    legs = 4
    def __init__(self, name): self.name = name
d = Dog('Rex')
print(d.__dict__)
print(Dog.__dict__.keys())

फ़ैक्टरी के रूप में क्लास मेथड

@classmethod को self के बजाय cls (क्लास) प्राप्त होता है। इसका उपयोग वैकल्पिक कंस्ट्रक्टर के रूप में करें।
class Date:
    def __init__(self, y, m, d): self.y,self.m,self.d=y,m,d
    @classmethod
    def from_string(cls, s):
        y,m,d=map(int,s.split('-'))
        return cls(y,m,d)
dt=Date.from_string('2024-01-15')
print(dt.y,dt.m,dt.d)

स्टैटिक मेथड

@staticmethod में self या cls नहीं होता। इसका उपयोग उन उपयोगिता फ़ंक्शन के लिए करें जो किसी क्लास के साथ तार्किक रूप से जुड़े हों, लेकिन जिन्हें इंस्टेंस या क्लास की आवश्यकता न हो।
class MathUtils:
    @staticmethod
    def add(a, b): return a + b
print(MathUtils.add(3, 4))

क्लास एट्रिब्यूट से इंस्टेंस गिनना

क्लास एट्रिब्यूट के रूप में काउंटर का उपयोग करके बनाए गए इंस्टेंस की संख्या गिनी जा सकती है।
class Widget:
    count = 0
    def __init__(self):
        Widget.count += 1
Widget(); Widget(); Widget()
print(Widget.count)

hasattr() और vars()

hasattr(obj, 'name') एट्रिब्यूट के मौजूद होने की जाँच करता है। vars(obj), obj.__dict__ के बराबर होता है।
class P:
    def __init__(self, x): self.x = x
p = P(5)
print(hasattr(p, 'x'), hasattr(p, 'z'))
print(vars(p))

त्वरित जाँच

जब किसी इंस्टेंस से म्यूटेबल क्लास एट्रिब्यूट सूची में append किया जाता है, तो क्या होता है?

पुनरावलोकन

क्लास एट्रिब्यूट साझा किए जाते हैं, जबकि इंस्टेंस एट्रिब्यूट हर ऑब्जेक्ट के लिए अलग होते हैं। इंस्टेंस की खोज क्लास एट्रिब्यूट को छिपा देती है। म्यूटेबल मानों को __init__ में आरंभ करें। फ़ैक्टरी मेथड के लिए @classmethod का उपयोग करें।

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

बहुत बढ़िया! अपने कौशल को और गहरा करने के लिए अगले पाठ पर जाएँ।
शुरुआत निःशुल्क

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

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

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

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

क्या “इंस्टेंस बनाम क्लास एट्रिब्यूट” पाठ निःशुल्क है?

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

“इंस्टेंस बनाम क्लास एट्रिब्यूट” में मैं क्या सीखूँगा?

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

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

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

“इंस्टेंस बनाम क्लास एट्रिब्यूट” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

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