पायथन का डेटाक्लास मॉड्यूल डेटा संग्रहीत करने के लिए उपयोग की जाने वाली कक्षाओं के निर्माण को सरल बनाता है।
हालांकि अधिकांश लोग बुनियादी उपयोग के बारे में जानते हैं, एक कम-ज्ञात फीचर फ़ील्ड (default_factory=...) है जो परिवर्तनशील प्रकारों में डिफ़ॉल्ट मानों को संभालने के लिए अविश्वसनीय रूप से उपयोगी हो सकता है।
डेटाक्लास को परिभाषित करते समय, आप एक परिवर्तनीय डिफ़ॉल्ट मान का उपयोग करना चाह सकते हैं, जैसे कोई सूची या शब्दकोश।
जिस तरह से उदाहरणों में डिफ़ॉल्ट तर्क साझा किए जाते हैं, उसके कारण सीधे परिवर्तनीय डिफ़ॉल्ट का उपयोग करने से अप्रत्याशित व्यवहार हो सकता है।
Default_factory फ़ंक्शन परिवर्तनशील डिफ़ॉल्ट को संभालने का एक साफ़ तरीका प्रदान करता है।
यहां एक सरल उदाहरण दिया गया है:
from dataclasses import dataclass, field from typing import List @dataclass class Student: name: str grades: List[int] = field(default_factory=list) # Use default_factory for mutable default # Create new Student instances student1 = Student(name="Alice") student2 = Student(name="Bob", grades=[90, 85]) # Modify student1's grades student1.grades.append(95) print(student1) # Output: Student(name='Alice', grades=[95]) print(student2) # Output: Student(name='Bob', grades=[90, 85]) # Output: # Student(name='Alice', grades=[95]) # Student(name='Bob', grades=[90, 85])
इस उदाहरण में, ग्रेड को प्रत्येक नए छात्र उदाहरण के लिए एक खाली सूची के साथ आरंभ किया गया है।
फ़ील्ड (डिफ़ॉल्ट_फैक्टरी = सूची) का उपयोग यह सुनिश्चित करता है कि साझा परिवर्तनीय डिफ़ॉल्ट के नुकसान से बचने के लिए प्रत्येक उदाहरण को अपनी अलग सूची मिलती है।
परिवर्तनीय डिफ़ॉल्ट तर्कों के साथ सामान्य समस्याओं से बचने के लिए default_factory सुविधा अमूल्य है।
यह सुनिश्चित करने में मदद करता है कि डेटाक्लास के प्रत्येक उदाहरण का अपना डिफ़ॉल्ट मान है, जिससे आपका कोड अधिक पूर्वानुमानित हो जाता है और साझा स्थिति से संबंधित सूक्ष्म बग से बचा जा सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3