logo

Destructeurs en Python

Les utilisateurs appellent Destructor pour détruire l'objet. En Python, les développeurs n’ont peut-être pas autant besoin de destructeurs que dans le langage C++. En effet, Python dispose d'un garbage collector dont la fonction gère automatiquement la gestion de la mémoire.

Dans cet article, nous verrons comment fonctionnent les destructeurs en Python et quand les utilisateurs peuvent les utiliser.

Le __du__() la fonction est utilisée comme fonction destructeur dans Python . L'utilisateur peut appeler le __du__() fonctionne lorsque toutes les références de l'objet ont été supprimées et qu'il devient un garbage collection.

Syntaxe:

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

Les utilisateurs doivent également noter que la référence aux objets est également supprimée lorsque l'objet sort de la référence ou lorsque le code se termine.

Dans l'exemple suivant, nous utiliserons la fonction __del__() et le mot-clé del pour supprimer toutes les références de l'objet afin que le destructeur intervienne automatiquement.

Par exemple:

 # 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 

Sortir:

heure du dîner ou du dîner
 The class called Animals is CREATED. The destructor is called for deleting the Animals. 

Explication -

Dans le code ci-dessus, le destructeur a été appelé lorsque les références à l'objet sont supprimées ou après la fin du programme. Cela signifie que le nombre de références pour l'objet devient nul et non lorsque l'objet sort de la portée. Nous expliquerons cela en montrant l’exemple suivant.

On peut également remarquer que le destructeur est appelé après la fin du programme.

Exemple:

remplacer tout dans la chaîne java
 # 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') 

Sortir:

 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. 

Maintenant, dans l'exemple suivant, nous verrons que lorsque la fonction() est appelée, elle créera l'instance de la classe Zebra, qui se transmettra à la classe Lion, qui définira ensuite la référence à la classe Zebra, et cela entraînera la référence circulaire.

Exemple:

 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() 

Sortir:

 Zebra is dead 

En général, le Garbage collector de Python, qui est utilisé pour détecter ces types de références cycliques, supprimera également la référence. Mais, dans l’exemple ci-dessus, le destructeur personnalisé est utilisé pour marquer cet élément comme irrécouvrable.

En langage simple, cela signifie que le ramasse-miettes ne connaît pas l'ordre dans lequel les objets doivent être détruits, il les laisse donc. Ainsi, si les instances des utilisateurs sont impliquées dans cette référence circulaire, elles resteront stockées en mémoire aussi longtemps que l'application sera exécutée.

Conclusion

Dans cet article, nous avons expliqué la fonction des destructeurs en Python et comment les utilisateurs peuvent les utiliser pour supprimer les objets dont les références sont déjà supprimées de la mémoire.