मेरे पास एक कक्षा है जो लेखन के लिए एक फ़ाइल खोलती है।डेल माईक्लास ऑब्जेक्ट को कॉल नहीं करता है .__ del __()
class MyClass:
def __del__(self):
self.close()
def close(self):
if self.__fileHandle__ is not None:
self.__fileHandle__.close()
लेकिन जब मैं की तरह कोड के साथ वस्तु को हटा दें::
myobj = MyClass()
myobj.open()
del myobj
अगर मैं वस्तु reinstantiate करने की कोशिश, मैं एक मूल्य त्रुटि मिलती है मेरी नाशक में, मैं समारोह है कि फाइल बंद कर देता है फोन :
ValueError: The file 'filename' is already opened. Please close it before reopening in write mode.
जबकि अगर मैं फोन myobj.close()
del myobj
इससे पहले कि मैं इस समस्या को नहीं मिलता है। तो __del__()
क्यों नहीं बुलाया जा रहा है?
'ऑब्जेक्ट 'से विरासत का प्रयास करें - ऐसा नहीं करना कुछ छः वर्षों के लिए पुरानी शैली माना जाता है। – Marcin
आपको कुछ और कोड दिखाना चाहिए। यह कैसे बता सकता है कि कैसे myobj.close() 'चीजों को बदलता है, यह जानने के बिना कि यह क्या करता है? – ugoren
ध्यान रखें कि 'del' '__del__' को कॉल नहीं करता है। यह सिर्फ एक संदर्भ को हटा देता है। आमतौर पर संदर्भ प्रबंधक प्रोटोकॉल ('स्टेटमेंट के साथ 'का उपयोग करके स्पष्ट रूप से बंद करना बेहतर होता है। – yak