Python Academy · पाठ

Dataclass परिभाषित करना

अनावश्यक प्रारंभिक कोड हटाने के लिए @dataclass का उपयोग करें।

पाठ 1, कुल 4 में से13 चरण

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

डेटाक्लास क्यों?

जब आप ऐसा वर्ग लिखते हैं जिसमें मुख्यतः डेटा होता है, तो आपको वही प्रारंभिक कोड बार-बार लिखना पड़ता है: एक __init__, एक __repr__ और एक __eq__। dataclasses मॉड्यूल सरल फ़ील्ड घोषणाओं से यह सब आपके लिए बना देता है।

  • लिखने और पढ़ने के लिए कम कोड।
  • __init__ में टाइपिंग की गलतियों की कम संभावना।
  • Python 3.7 से मानक लाइब्रेरी में शामिल।

पुराना तरीका

यहाँ एक सामान्य वर्ग है जो एक बिंदु संग्रहीत करता है। ध्यान दें कि केवल दो संख्याएँ संग्रहीत करने के लिए कितना अधिक कोड लिखना पड़ता है।

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

p = Point(1, 2)
print(p.x, p.y)

@dataclass डेकोरेटर

किसी वर्ग के ऊपर @dataclass लगाएँ और टाइप एनोटेशन के साथ फ़ील्ड घोषित करें। Python अपने-आप __init__ बना देता है।

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

p = Point(1, 2)
print(p.x, p.y)

स्वचालित __repr__

डेटाक्लास एक पढ़ने योग्य __repr__ भी बनाते हैं, इसलिए ऑब्जेक्ट को प्रिंट करने पर मेमोरी पते के बजाय उसके फ़ील्ड दिखाई देते हैं।

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

print(Point(3, 4))

स्वचालित __eq__

जब उनके सभी फ़ील्ड समान हों, तो दो डेटाक्लास इंस्टेंस समान माने जाते हैं। __eq__ को हाथ से लिखने की आवश्यकता नहीं होती।

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

print(Point(1, 2) == Point(1, 2))
print(Point(1, 2) == Point(9, 9))

टाइप एनोटेशन आवश्यक हैं

प्रत्येक फ़ील्ड में टाइप एनोटेशन होना ही चाहिए। यही एनोटेशन डेटाक्लास तंत्र को बताता है कि नाम एक फ़ील्ड है। एनोटेशन के बिना किया गया साधारण असाइनमेंट फ़ील्ड नहीं, बल्कि सामान्य वर्ग विशेषता बन जाता है।

from dataclasses import dataclass

@dataclass
class User:
    name: str
    age: int

u = User('Alice', 30)
print(u)

मेथड जोड़ना

डेटाक्लास अभी भी एक सामान्य वर्ग ही है। आप ऐसे सामान्य मेथड जोड़ सकते हैं जो बनाए गए फ़ील्ड का उपयोग करें।

from dataclasses import dataclass

@dataclass
class Rectangle:
    width: int
    height: int

    def area(self):
        return self.width * self.height

r = Rectangle(3, 4)
print(r.area())

फ़ील्ड में बदलाव करना

डिफ़ॉल्ट रूप से डेटाक्लास इंस्टेंस परिवर्तनशील होते हैं, इसलिए निर्माण के बाद आप सामान्य विशेषताओं की तरह फ़ील्ड को फिर से असाइन कर सकते हैं।

from dataclasses import dataclass

@dataclass
class Counter:
    value: int

c = Counter(0)
c.value += 5
print(c.value)

asdict और astuple

asdict() और astuple() सहायक किसी इंस्टेंस को शब्दकोश या ट्यूपल में बदलते हैं, जो क्रमबद्ध करने के लिए उपयोगी है।

from dataclasses import dataclass, asdict, astuple

@dataclass
class Point:
    x: int
    y: int

p = Point(1, 2)
print(asdict(p))
print(astuple(p))

नेस्टेड डेटाक्लास

डेटाक्लास का कोई फ़ील्ड स्वयं एक अन्य डेटाक्लास हो सकता है। बनाए गए __repr__ और asdict() नेस्टेड संरचनाओं में भी पुनरावर्ती रूप से काम करते हैं।

from dataclasses import dataclass, asdict

@dataclass
class Address:
    city: str

@dataclass
class Person:
    name: str
    address: Address

p = Person('Bob', Address('Paris'))
print(asdict(p))

डेटाक्लास का उपयोग कब करें

जब कोई वर्ग मुख्यतः संबंधित मानों को एक साथ समूहित करता हो, तब डेटाक्लास का उपयोग करें।

  • कॉन्फ़िगरेशन ऑब्जेक्ट।
  • किसी फ़ंक्शन से लौटाए गए रिकॉर्ड।
  • निर्देशांक या धनराशि जैसे सरल मान प्रकार।

जिन वर्गों में डेटा की अपेक्षा व्यवहार अधिक महत्वपूर्ण हो, उनके लिए सामान्य वर्ग अधिक स्पष्ट हो सकता है।

त्वरित जाँच

@dataclass डेकोरेटर अपने-आप क्या बनाता है?

पुनरावलोकन

आपने बॉयलरप्लेट कोड हटाने के लिए @dataclass का उपयोग करना सीखा।

  • टाइप एनोटेशन के साथ फ़ील्ड घोषित करें।
  • __init__, __repr__ और __eq__ अपने-आप बनते हैं।
  • इंस्टेंस बदलने के लिए asdict() और astuple() का उपयोग करें।
  • आप अभी भी मेथड जोड़ सकते हैं और डेटाक्लास को नेस्ट कर सकते हैं।
शुरुआत निःशुल्क

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

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

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

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

क्या “Dataclass परिभाषित करना” पाठ निःशुल्क है?

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

“Dataclass परिभाषित करना” में मैं क्या सीखूँगा?

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

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

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

“Dataclass परिभाषित करना” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. Dataclass परिभाषित करना
  2. डिफ़ॉल्ट मान और field()
  3. अपरिवर्तनीय और तुलना विकल्प
  4. attrs लाइब्रेरी
← Python Academy पर वापस जाएँ