ExpertiDict

Python · Avançado · Português · Técnico

finalizador

/finalizaˈdoɾ/substantivo

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.finalize

Exemplos

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

Veja também

Todos os termos de Python