У меня есть класс, который открывает файл для записи. В моем деструкторе я вызываю функцию, которая закрывает файл:
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
если я пытаюсь восстановить объект, я получаю ошибку значения:
ValueError: The file 'filename' is already opened. Please close it before reopening in write mode.
тогда как если я вызываю myobj.close()
перед del myobj
, я не получаю этой проблемы. Так почему же не вызывается __del__()
?