Python में __slots__ क्या है और इसकी आवश्यकता क्यों है? क्लास ऑप्टिमाइज़ेशन की पूरी गाइड
Python भाषा में, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में क्लासेस की अहम भूमिका होती है। लेकिन जब आप बड़ी संख्या में ऑब्जेक्ट बनाते हैं, तो आपने देखा होगा कि ऐसे प्रोग्राम काफी मेमोरी खपत करते हैं। यह समस्या तब और गंभीर हो जाती है जब आप एक ही क्लास के लाखों इंस्टेंस बनाते हैं।
ऐसे मामलों में, एक विशेष तंत्र काम आता है — __slots__। यह सिर्फ एक सिंटैक्स एलिमेंट नहीं है, बल्कि एक शक्तिशाली ऑप्टिमाइज़ेशन टूल है जो मेमोरी को नियंत्रित करने और प्रोग्राम की गति बढ़ाने में मदद करता है।
आइए समझते हैं कि __slots__ क्या है, इसका उपयोग कैसे करें, और किन परिस्थितियों में यह वास्तव में आवश्यक है।
Python में __slots__ क्या है?
__slots__ एक विशेष क्लास अट्रीब्यूट है जो उस क्लास के इंस्टेंस के लिए अनुमत अट्रीब्यूट्स की सूची को सीमित करता है।
डिफ़ॉल्ट रूप से, Python में ऑब्जेक्ट बनाते समय, उनके अट्रीब्यूट्स को __dict__ नामक डिक्शनरी में स्टोर किया जाता है। यह सुविधाजनक है, लेकिन मेमोरी के लिहाज से अकुशल है, खासकर जब बहुत सारे एक जैसे ऑब्जेक्ट बनाए जाते हैं।
जब आप __slots__ को परिभाषित करते हैं, तो Python डिक्शनरी का उपयोग करने के बजाय अट्रीब्यूट्स को स्टोर करने के लिए स्टैटिकली आवंटित संरचनाएं बनाता है, जिससे मेमोरी की काफी बचत होती है और अट्रीब्यूट्स तक पहुंच तेज हो जाती है।
📚 बिना __slots__ के सरल उदाहरण:
जैसा कि आप देख सकते हैं, सभी अट्रीब्यूट्स __dict__ में स्टोर होते हैं।