"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन ट्रिक: __स्लॉट्स__ का जादू

पायथन ट्रिक: __स्लॉट्स__ का जादू

2024-11-02 को प्रकाशित
ब्राउज़ करें:324

Python Trick: The Magic of __slots__

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

slots दर्ज करें, एक सुविधा जो आपको अपनी कक्षा के लिए विशेषताओं के एक निश्चित सेट को परिभाषित करने की अनुमति देती है, मेमोरी ओवरहेड को कम करती है और संभावित रूप से विशेषता पहुंच को तेज करती है।


यह काम किस प्रकार करता है

आम तौर पर, पायथन ऑब्जेक्ट्स को विशेषताओं को संग्रहीत करने के लिए शब्दकोश के रूप में कार्यान्वित किया जाता है, जिससे मेमोरी की खपत अधिक हो सकती है।

अपनी कक्षा में slots को परिभाषित करके, आप पायथन को अधिक मेमोरी-कुशल आंतरिक संरचना का उपयोग करने का निर्देश देते हैं।

यह विशेष रूप से तब उपयोगी होता है जब आप समय से पहले जानते हैं कि एक कक्षा में क्या विशेषताएं होंगी और आप एक पूर्ण शब्दकोश के ओवरहेड से बचना चाहते हैं।

यहां स्लॉट्स का उपयोग करने का एक प्रदर्शन दिया गया है:

class Point:
    __slots__ = ['x', 'y']  # Define the allowed attributes

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


# Create a Point instance
p = Point(10, 20)

print(p.x)  # Output: 10
print(p.y)  # Output: 20

# Attempting to add a new attribute will raise an AttributeError
try:
    p.z = 30
except AttributeError as e:
    print(e)  # Output: 'Point' object has no attribute 'z'

# Output:
# 10
# 20
# 'Point' object has no attribute 'z'

इस उदाहरण में, slots पॉइंट क्लास को केवल x और y विशेषताओं तक सीमित करता है।

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


यह अच्छा क्यों है?

slots का उपयोग करने से महत्वपूर्ण मेमोरी बचत हो सकती है, विशेष रूप से बड़ी संख्या में उदाहरण बनाते समय, विशेषता शब्दकोश के ओवरहेड को समाप्त करके।

यह विशेषता पहुंच गति में भी सुधार कर सकता है।

हालाँकि, सावधान रहें: स्लॉट्स पायथन ऑब्जेक्ट्स की कुछ गतिशील क्षमताओं को सीमित कर सकते हैं और सभी उपयोग के मामलों के लिए उपयुक्त नहीं हो सकते हैं।

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/devasservice/python-trick-the-magic-of-slots-578j?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3