Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में डेटा क्लासेस (डेटाक्लास)

डेटाक्लास 3.7 संस्करण के बाद से पायथन के मानक पुस्तकालय में जोड़ा गया एक नया मॉड्यूल है। यह @dataclass डेकोरेटर को परिभाषित करता है जो स्वचालित रूप से कंस्ट्रक्टर जादू विधि __init__(), स्ट्रिंग प्रतिनिधित्व विधि __repr__(), __eq__() विधि उत्पन्न करता है जो उपयोगकर्ता परिभाषित वर्ग के लिए ==ऑपरेटर (और कुछ और) को अधिभारित करता है।

डेटाक्लास डेकोरेटर के पास निम्नलिखित हस्ताक्षर हैं

dataclass(init=True, repr=True, eq=True, order=False, unsafe_hash=False, frozen=False)

सभी तर्क एक बूलियन मान लेते हैं जो दर्शाता है कि संबंधित जादू विधि या विधियां स्वचालित रूप से उत्पन्न होंगी या नहीं।

डिफ़ॉल्ट रूप से 'init' तर्क सही है। यह स्वचालित रूप से कक्षा के लिए __init__() विधि उत्पन्न करेगा।

आइए हम डेटाक्लास डेकोरेटर का उपयोग करके छात्र वर्ग को निम्नानुसार परिभाषित करें

from dataclasses import dataclass

@dataclass
class Student(object):
   name : str
   age : int
   percent : float

स्वतः उत्पन्न __init__() विधि इस प्रकार है

def __init__(self, name: str, age: int, percent: float):
   self.name = name
   self.age = age
   self.percent = percent

यदि वर्ग स्पष्ट रूप से __init__() विधि को परिभाषित करता है, तो init पैरामीटर को अनदेखा कर दिया जाता है।

repr तर्क डिफ़ॉल्ट रूप से भी सत्य है। इसलिए __repr__() मेथड अपने आप जेनरेट हो जाएगी। __repr__() वस्तु का औपचारिक स्ट्रिंग प्रतिनिधित्व है। यदि वर्ग पहले से ही __repr__() को परिभाषित करता है, तो इस पैरामीटर को अनदेखा कर दिया जाता है।

eq तर्क डिफ़ॉल्ट रूप से true है। यह __eq__() मेथड को ऑटो-जेनरेट करेगा। इस विधि को बराबर तुलना ऑपरेटर (==) के जवाब में बुलाया जाता है। दोबारा, यदि वर्ग पहले से ही __eq__() को परिभाषित करता है, तो इस पैरामीटर को अनदेखा कर दिया जाता है।

यदि 'ऑर्डर' पैरामीटर सत्य है (डिफ़ॉल्ट गलत है), तुलना के लिए जादुई तरीके, __lt__(), __le__(), __gt__(), और __ge__() विधियां स्वचालित रूप से उत्पन्न होंगी, वे तुलना ऑपरेटरों को लागू करती हैं <<=> उत्तर>=क्रमशः। यदि आदेश सत्य है और eq गलत है, तो एक ValueError उठाया जाता है। यदि वर्ग पहले से ही इनमें से किसी भी तरीके को परिभाषित करता है), तो इसका परिणाम TypeError में होता है।

असुरक्षित_हैश तर्क अगर गलत (डिफ़ॉल्ट), एक __hash__() विधि उत्पन्न होती है जिसके अनुसार eq और फ्रोजन सेट होते हैं।

जमे हुए तर्क:यदि सही है (डिफ़ॉल्ट गलत है), केवल-पढ़ने के लिए जमे हुए उदाहरणों का अनुकरण करता है।

>>> from data_class import Student
>>> s1=Student('Naveen', 21, 50.50)
>>> s2=Student('Mangesh', 20, 50.00)
>>> s1==s2
False

asdict()

यह फ़ंक्शन क्लास इंस्टेंस को डिक्शनरी ऑब्जेक्ट में कनवर्ट करता है।

>>> import dataclasses
>>> dataclasses.asdict(s1)
{'name': 'Naveen', 'age': 21, 'percent': 50.5}

आश्चर्य ()

यह फ़ंक्शन क्लास इंस्टेंस को टुपल ऑब्जेक्ट में बदल देता है।

>>> dataclasses.astuple(s2)
('Mahesh', 20, 50.0)

make_dataclass()

यह फ़ंक्शन फ़ील्ड तर्क के रूप में दिए गए टुपल्स की सूची से एक नया डेटाक्लास बनाता है।

>>> NewClass=dataclasses.make_dataclass('NewClass', [('x',int),('y',float)])
>>> n = NewClass(10,20)
>>> n
NewClass(x=10, y=20)

  1. पायथन JSON

    JSON एक लोकप्रिय डेटा प्रारूप है जिसका उपयोग संरचित डेटा को संग्रहीत करने के लिए किया जाता है। जब आप पायथन में एक एप्लिकेशन बना रहे हों, तो आप यह तय कर सकते हैं कि आप अपने ऐप में JSON का उपयोग करना चाहते हैं। उदाहरण के लिए, आप किसी JSON फ़ाइल से डेटा पढ़ना चाहते हैं, या JSON प्रारूप में संग्रहीत

  1. dir () पायथन में विधि

    डीआईआर () फ़ंक्शन किसी भी ऑब्जेक्ट की विशेषताओं और विधियों की सूची देता है जैसे फ़ंक्शंस, मॉड्यूल, स्ट्रिंग्स, सूचियां, शब्दकोश इत्यादि। इस लेख में हम देखेंगे कि प्रोग्राम में विभिन्न तरीकों से डीआईआर() का उपयोग कैसे करें और विभिन्न आवश्यकताओं के लिए । सिर्फ dir() जब हम प्रोग्राम में किसी अन्य मॉड्

  1. पायथन - पंडों के साथ डेटा फ़िल्टर करना। क्वेरी () विधि

    पांडा डेटा सफाई, डेटा विश्लेषण आदि के लिए एक बहुत व्यापक रूप से इस्तेमाल किया जाने वाला पायथन पुस्तकालय है। इस लेख में हम देखेंगे कि हम किसी दिए गए डेटा सेट से विशिष्ट डेटा प्राप्त करने के लिए क्वेरी विधि का उपयोग कैसे कर सकते हैं। हमारे पास एक क्वेरी के अंदर सिंगल और मल्टीपल दोनों स्थितियां हो सकती