पायथन की एटीआरएस लाइब्रेरी उन डेवलपर्स के लिए एक गेम-चेंजर है जो क्लास निर्माण को सरल बनाना और बॉयलरप्लेट कोड को कम करना चाहते हैं। इस लाइब्रेरी पर NASA का भी भरोसा है।
2015 में हाइनेक श्लावैक द्वारा बनाया गया, attrs स्वचालित रूप से विशेष तरीकों को उत्पन्न करने और कक्षाओं को परिभाषित करने के लिए एक साफ, घोषणात्मक तरीका प्रदान करने की क्षमता के लिए पायथन डेवलपर्स के बीच एक पसंदीदा उपकरण बन गया है।
डेटाक्लास एक प्रकार का attrs का सबसेट है।
एटीआर उपयोगी क्यों है:
स्थापना:
Attrs के साथ आरंभ करने के लिए, आप इसे pip का उपयोग करके इंस्टॉल कर सकते हैं:
pip install attrs
बुनियादी उपयोग:
किसी वर्ग को परिभाषित करने के लिए attrs का उपयोग कैसे करें इसका एक सरल उदाहरण यहां दिया गया है:
import attr @attr.s class Person: name = attr.ib() age = attr.ib() # Creating an instance person = Person("Alice", 30) print(person) # Person(name='Alice', age=30)
attrs स्वचालित रूप से आपकी कक्षाओं के लिए init, repr, और eq तरीके उत्पन्न करता है:
@attr.s class Book: title = attr.ib() author = attr.ib() year = attr.ib() book1 = Book("1984", "George Orwell", 1949) book2 = Book("1984", "George Orwell", 1949) print(book1) # Book(title='1984', author='George Orwell', year=1949) print(book1 == book2) # True
import attr from typing import List @attr.s class Library: name = attr.ib(type=str) books = attr.ib(type=List[str], default=attr.Factory(list)) capacity = attr.ib(type=int, default=1000) library = Library("City Library") print(library) # Library(name='City Library', books=[], capacity=1000)
import attr def must_be_positive(instance, attribute, value): if value4. उन्नत उपयोग
एक। विशेषता व्यवहार को अनुकूलित करना:
import attr @attr.s class User: username = attr.ib() _password = attr.ib(repr=False) # Exclude from repr @property def password(self): return self._password @password.setter def password(self, value): self._password = hash(value) # Simple hashing for demonstration user = User("alice", "secret123") print(user) # User(username='alice')बी। जमे हुए उदाहरण और स्लॉट:
@attr.s(frozen=True) # slots=True is the default class Point: x = attr.ib() y = attr.ib() point = Point(1, 2) try: point.x = 3 # This will raise an AttributeError except AttributeError as e: print(e) # can't set attributeसी। फ़ैक्टरी फ़ंक्शंस और पोस्ट-इनिट प्रोसेसिंग:
import attr import uuid @attr.s class Order: id = attr.ib(factory=uuid.uuid4) items = attr.ib(factory=list) total = attr.ib(init=False) def __attrs_post_init__(self): self.total = sum(item.price for item in self.items) @attr.s class Item: name = attr.ib() price = attr.ib(type=float) order = Order(items=[Item("Book", 10.99), Item("Pen", 1.99)]) print(order) # Order(id=UUID('...'), items=[Item(name='Book', price=10.99), Item(name='Pen', price=1.99)], total=12.98)5. सर्वोत्तम प्रथाएं और सामान्य नुकसान
सर्वोत्तम प्रथाएं:
पुस्तकालय | विशेषताएँ | प्रदर्शन | समुदाय |
---|---|---|---|
attrs | स्वचालित विधि निर्माण, प्रकार और डिफ़ॉल्ट मानों के साथ विशेषता परिभाषा, सत्यापनकर्ता और कनवर्टर्स | मैन्युअल कोड से बेहतर प्रदर्शन | सक्रिय समुदाय |
पाइडेंटिक | डेटा सत्यापन और सेटिंग्स प्रबंधन, स्वचालित विधि निर्माण, प्रकार और डिफ़ॉल्ट मानों के साथ विशेषता परिभाषा, सत्यापनकर्ता और कनवर्टर्स | अच्छा प्रदर्शन | सक्रिय समुदाय |
डेटाक्लासेस | पायथन 3.7 में निर्मित, उन्हें और अधिक सुलभ बनाता है | पायथन संस्करण से जुड़ा हुआ है | अंतर्निहित पायथन लाइब्रेरी |
attrs और dataclasses pydantic1 से तेज़ हैं।
प्रदर्शन:
एटीआर आमतौर पर अपने अनुकूलित कार्यान्वयन के कारण मैन्युअल रूप से लिखित कक्षाओं या अन्य पुस्तकालयों की तुलना में बेहतर प्रदर्शन प्रदान करता है।
वास्तविक दुनिया का उदाहरण:
from attr import define, Factory from typing import List, Optional @define class Customer: id: int name: str email: str orders: List['Order'] = Factory(list) @define class Order: id: int customer_id: int total: float items: List['OrderItem'] = Factory(list) @define class OrderItem: id: int order_id: int product_id: int quantity: int price: float @define class Product: id: int name: str price: float description: Optional[str] = None # Usage customer = Customer(1, "Alice", "[email protected]") product = Product(1, "Book", 29.99, "A great book") order_item = OrderItem(1, 1, 1, 2, product.price) order = Order(1, customer.id, 59.98, [order_item]) customer.orders.append(order) print(customer)
attrs एक शक्तिशाली लाइब्रेरी है जो डेटा सत्यापन और हेरफेर के लिए मजबूत सुविधाएँ प्रदान करते हुए पायथन वर्ग परिभाषाओं को सरल बनाती है। बॉयलरप्लेट कोड को कम करने, पठनीयता में सुधार और प्रदर्शन को बढ़ाने की इसकी क्षमता इसे पायथन डेवलपर्स के लिए एक अमूल्य उपकरण बनाती है।
सामुदायिक संसाधन:
अपने अगले प्रोजेक्ट में एटीआर आज़माएं और इसके लाभों का प्रत्यक्ष अनुभव करें। समुदाय के साथ अपने अनुभव साझा करें और इसके चल रहे विकास में योगदान दें। हैप्पी कोडिंग!
https://stefan.sofa-rockers.org/2020/05/29/attrs-dataclasses-pydantic/ ↩
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3