Python · Avançado · Português · Técnico
finalizador
Método especial __del__, chamado quando o objeto vai ser destruído. No CPython costuma ocorrer logo que a última referência some, mas o momento não é garantido pela linguagem.
Onde usar
Surge ao revisar classes que seguram arquivos, sockets ou locks e dependem do __del__ para fechar. Em code review, a recomendação é usar context manager ou weakref.finalize.
Em código
class Recurso:
def __del__(self):
print('finalizando')
r = Recurso()
del r # CPython: imprime na hora
# prefira with ou weakref.finalizeExemplos
Não confie no finalizador pra fechar o socket, use with.
O finalizador rodou na hora porque o CPython conta referências.
Cuidado
Não conte com o __del__ para liberar recursos de forma previsível, nem para executar no encerramento do programa.
Sinônimos
método del