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