Короткий ответ: нет.
Более длинный ответ: __del__
на самом деле не является деструктором в смысле C ++, и вы, вероятно, не захотите его использовать.
Вместо этого, если вы требуется очистка, вам, вероятно, следует превратить объекты в менеджеры контекста (написав методы __enter__
и __exit__
) и использовать их в операторе with
и / или предоставить им методы close
, которые необходимо вызывать явно. Большинство классов в Python и широко используемых библиотеках, которым необходимо освободить внешние ресурсы, делают и то, и другое (часто с помощью __enter__
return self
и __exit__
call self.close()
).
Со сборкой мусора , обычно нет необходимости освобождать какую-либо память, выделенную в __init__
или __new__
, как это может быть сделано в C ++, поскольку она будет собираться автоматически.
Есть варианты использования метода __del__
, но они редки.