__del__() मेथड को डिस्ट्रक्टर मेथड के रूप में जाना जाता है। यह तब कॉल किया जाता है जब कोई ऑब्जेक्ट गार्बेज कलेक्ट होता है जो ऑब्जेक्ट के सभी रेफरेंस डिलीट होने के बाद होता है।
एक साधारण मामले में यह किसी वेरिएबल को डिलीट करने के तुरंत बाद हो सकता है जैसे del x या, यदि x एक लोकल वेरिएबल है, तो फंक्शन समाप्त होने के बाद। विशेष रूप से, जब तक सर्कुलर रेफरेंस न हों, CPython जो स्टैंडर्ड Python इम्प्लीमेंटेशन है, तुरंत गार्बेज कलेक्ट करेगा।
Python गार्बेज कलेक्शन की एकमात्र प्रॉपर्टी यह है कि यह सभी रेफरेंस डिलीट होने के बाद होता है, इसलिए यह आवश्यक रूप से तुरंत बाद नहीं हो सकता और यहां तक कि बिल्कुल भी नहीं हो सकता।
यहां तक कि, वेरिएबल कई कारणों से लंबे समय तक जीवित रह सकते हैं, उदाहरण के लिए, एक प्रोपेगेटिंग एक्सेप्शन या मॉड्यूल इंट्रोस्पेक्शन वेरिएबल रेफरेंस काउंट को 0 से अधिक रख सकता है। साथ ही, वेरिएबल सर्कुलर रेफरेंस का हिस्सा हो सकता है - गार्बेज कलेक्शन चालू होने पर CPython अधिकांश, लेकिन सभी नहीं, ऐसे साइकिल को तोड़ता है, और फिर भी केवल समय-समय पर।
__del__ के वैध उपयोग के मामले हैं: उदाहरण के लिए, यदि कोई ऑब्जेक्ट X, Y को रेफरेंस करता है और ग्लोबल कैश में Y रेफरेंस की एक कॉपी भी रखता है (cache['X -> Y'] = Y) तो X.__del__ का कैश एंट्री को भी डिलीट करना विनम्र होगा।
यदि आप जानते हैं कि डिस्ट्रक्टर आवश्यक क्लीनअप प्रदान करता है, तो आप इसे सीधे कॉल करना चाह सकते हैं, x.__del__()।