del MyClass не вызывает object.__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

если я пытаюсь восстановить объект, я получаю ошибку значения:

ValueError: The file 'filename' is already opened.  Please close it before reopening in write mode.

тогда как если я вызываю myobj.close() перед del myobj, я не получаю этой проблемы. Так почему же не вызывается __del__()?

6
задан Brian Tompsett - 汤莱恩 19 August 2015 в 19:37
поделиться