logo

Destruidores em Python

Os usuários chamam o Destructor para destruir o objeto. Em Python, os desenvolvedores podem não precisar de destruidores tanto quanto na linguagem C++. Isso ocorre porque o Python possui um coletor de lixo cuja função é lidar com o gerenciamento de memória automaticamente.

Neste artigo, discutiremos como funcionam os destruidores em Python e quando os usuários podem usá-los.

O __do__() função é usada como a função destruidora em Pitão . O usuário pode ligar para o __do__() funciona quando todas as referências do objeto foram excluídas e ele se torna coletado como lixo.

Sintaxe:

 def __del__(self): # the body of destructor will be written here. 

Os usuários também devem observar que a referência aos objetos também é excluída quando o objeto sai da referência ou quando o código termina.

No exemplo a seguir, usaremos a função __del__() e a palavra-chave del para deletar todas as referências do objeto para que o destruidor seja envolvido automaticamente.

Por exemplo:

 # we will illustrate destructor function in Python program # we will create Class named Animals class Animals: # we will initialize the class def __init__(self): print('The class called Animals is CREATED.') # now, we will Call the destructor def __del__(self): print('The destructor is called for deleting the Animals.') object = Animals() del object 

Saída:

string java está vazia
 The class called Animals is CREATED. The destructor is called for deleting the Animals. 

Explicação -

No código acima, o destruidor foi chamado quando as referências ao objeto foram excluídas ou após o término do programa. Isso significa que a contagem de referência do objeto se torna zero e não quando o objeto sai do escopo. Explicaremos isso mostrando o próximo exemplo.

Podemos notar também que o destruidor é chamado após o término do programa.

Exemplo:

 # We will create Class named Animals class Animals: # Initialize the class def __init__(self): print('The class called Animals is CREATED.') # now, we will Call the destructor def __del__(self): print('The destructor is called for deleting the Animals.') def Create_object(): print('we are creating the object') object = Animals() print('we are ending the function here') return object print('we are calling the Create_object() function now') object = Create_object() print('The Program is ending here') 

Saída:

 we are calling the Create_object() function now we are creating the object The class called Animals is CREATED. we are ending the function here The Program is ending here The destructor is called for deleting the Animals. 

Agora no próximo exemplo, veremos que quando a function() for chamada, ela criará a instância da classe Zebra, que se passará para a classe Lion, que então definirá a referência para a classe Zebra, e resultará em a referência circular.

Exemplo:

 class Animals: # we will initialize the class def __init__(self): print(' The class called Animals is CREATED.') class Lion: def __init__(self, zebraa): self.zebra = zebraa class Zebra: def __init__(self): self.lion = Lion(self) def __del__(self): print('Zebra is dead') def function(): zebra = Zebra() function() 

Saída:

 Zebra is dead 

Em geral, o coletor de lixo do Python, usado para detectar esses tipos de referências cíclicas, também removerá a referência. Mas, no exemplo acima, o destruidor personalizado é usado para marcar este item como incobrável.

Em linguagem simples, significa que o coletor de lixo não sabe a ordem em que o objeto deve ser destruído, por isso os abandona. Assim, se as instâncias dos usuários estiverem envolvidas nesta referência circular, elas permanecerão armazenadas na memória enquanto a aplicação for executada.

Conclusão

Neste artigo, explicamos a função dos Destruidores em Python e como os usuários podem utilizá-los para deletar os objetos cujas referências já foram removidas da memória.