गतिशील विशेषताओं के साथ पायथन का लचीलापन इसकी शक्तियों में से एक है, लेकिन कभी-कभी आप मेमोरी उपयोग और प्रदर्शन को अनुकूलित करना चाहते हैं।
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 का उपयोग करने से महत्वपूर्ण मेमोरी बचत हो सकती है, विशेष रूप से बड़ी संख्या में उदाहरण बनाते समय, विशेषता शब्दकोश के ओवरहेड को समाप्त करके।
यह विशेषता पहुंच गति में भी सुधार कर सकता है।
हालाँकि, सावधान रहें: स्लॉट्स पायथन ऑब्जेक्ट्स की कुछ गतिशील क्षमताओं को सीमित कर सकते हैं और सभी उपयोग के मामलों के लिए उपयुक्त नहीं हो सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3