Django docs विषय पर यह कहना:Django के सिग्नल हैंडलिंग डिफ़ॉल्ट रूप से कॉलबैक के लिए कमजोर संदर्भों का उपयोग क्यों करता है?
भी ध्यान रखें कि Django स्टोर, डिफ़ॉल्ट रूप से कमजोर संदर्भ के रूप में संचालकों संकेत इसलिए यदि आपके हैंडलर एक स्थानीय समारोह है, यह कचरा एकत्र हो सकता है। इसे रोकने के लिए, कमजोर पास करें = पर झूठा जब आप सिग्नल के कनेक्ट() को कॉल करते हैं।
मुझे यह डिफ़ॉल्ट नहीं है कि यह डिफ़ॉल्ट क्यों है, और मुझे समझ में नहीं आ रहा है कि आप कभी भी एक सिग्नल क्यों चाहते हैं जिसे आप स्पष्ट रूप से गायब होने के लिए पंजीकृत कर चुके हैं। तो यहां कमजोर संदर्भों के लिए उपयोग-मामला क्या है? और यह डिफ़ॉल्ट क्यों है?
मुझे एहसास है कि शायद 99% मामलों में कोई फर्क नहीं पड़ता है, लेकिन स्पष्ट रूप से कुछ ऐसा है जो मुझे समझ में नहीं आता है, और मैं जानना चाहता हूं कि क्या कोई "गॉथचास" गुप्त है जो मुझे किसी दिन काट सकता है।
लेकिन निश्चित रूप से यदि संकेत हैंडलर स्पष्ट रूप से डिस्कनेक्ट हो गई, संकेत हैंडलर कहीं भी संदर्भित नहीं किया जाएगा, और यह है कि में कुछ भी कचरा संग्रहण बंद नहीं होंगे मामला। ऐसा लगता है कि कमजोर संदर्भों का उपयोग करने से केवल तभी फर्क पड़ता है जब संकेत * स्पष्ट रूप से डिस्कनेक्ट नहीं होता है, और यदि आप इसके लिए नहीं पूछते हैं तो सिग्नल डिस्कनेक्ट क्यों करना चाहते हैं? –
आप सही हैं, इसलिए सिग्नल हैंडलर को कचरा इकट्ठा करने के लिए, कमजोर संदर्भों के बिना आपको दो चीजें करना होगा: सिग्नल हैंडलर को हटाएं, और सिग्नल को डिस्कनेक्ट करें। यह सभी के लिए स्पष्ट नहीं हो सकता है, इसलिए मुझे लगता है कि यही कारण है कि डिफ़ॉल्ट रूप से कमजोर संदर्भों का उपयोग किया जाता है। –
इतना घना होने के लिए खेद है, लेकिन मुझे अभी भी समझ में नहीं आता है। मुझे लगता है कि मैं समझता हूं कि सिग्नल को "डिस्कनेक्ट" करके आपका क्या मतलब है: हैंडलर में तर्क के रूप में गुजरने वाले 'सिग्नल' उदाहरण पर 'डिस्कनेक्ट' विधि को कॉल करें। लेकिन सिग्नल हैंडलर को "हटाएं" से आपका क्या मतलब है? –