मुझे याद नहीं है जब मैंने पिछली बार del
का उपयोग किया था - इसकी आवश्यकता वास्तव में दुर्लभ है, और आमतौर पर आवश्यक import
या इसके बाद के बाद मॉड्यूल के नामस्थान को साफ करने के लिए इस तरह के कार्यों तक ही सीमित है।
विशेष रूप से, यह नहीं सच के रूप में एक और (अब हटाए) जवाब का दावा किया है,, कि
del
का उपयोग करना सुनिश्चित करें एक वस्तु की __del__
विधि कहा जाता है बनाने के लिए एक ही रास्ता है
और इसे समझना बहुत महत्वपूर्ण है। मदद के लिए, आइए __del__
के साथ एक वर्ग बनाने के लिए और जाँच जब यह कहा जाता है करते हैं:
>>> class visdel(object):
... def __del__(self): print 'del', id(self)
...
>>> d = visdel()
>>> a = list()
>>> a.append(d)
>>> del d
>>>
देखते हैं? del
"सुनिश्चित करें" नहीं है कि __del__
कहलाता है: del
एक संदर्भ हटा देता है, और केवल को हटाने के लिए संदर्भ __del__
कहा जाता है। तो, भी:
>>> a.append(visdel())
>>> a[:]=[1, 2, 3]
del 550864
del 551184
जब पिछले संदर्भ दूर, (तरीके, इस तरह इस मामले में के रूप में एक टुकड़ा काम, या नाम के अन्य rebindings और अन्य स्लॉट के रूप में है कि del
शामिल नहीं है में भी शामिल है) हो जाता है तो__del__
कहलाता है - चाहे del
ऑब्जेक्ट के संदर्भ को कम करने में कभी शामिल था, या नहीं, बिल्कुल कोई फर्क नहीं पड़ता।
तो, जब तक कि आपको विशेष रूप से किसी विशिष्ट कारण के लिए नामस्थान (आमतौर पर एक मॉड्यूल का नामस्थान, लेकिन अनुमानित रूप से किसी वर्ग या उदाहरण के) को साफ करने की आवश्यकता न हो, del
से परेशान न हों (यह कभी-कभी किसी को हटाने के लिए आसान हो सकता है एक कंटेनर से आइटम, लेकिन मुझे पता चला है कि मैं अक्सर के लिए कंटेनर pop
विधि या आइटम या टुकड़ा असाइनमेंट का उपयोग कर रहा हूं!)।
एलेक्स, बहुत जल्द पाइथन के तकनीकी लेखकों को नौकरी के बिना होने जा रहे हैं;) एक और महान जवाब के लिए धन्यवाद। –
उत्कृष्ट जवाब, +1! – jhwist
@ दाना, निश्चित आशा नहीं है, क्योंकि मैं खुद ऐसे लेखक हूं ;-)। @ jhwist, धन्यवाद! –