Comment détruire un objet en python (2023)

Lorsqu'un objet est supprimé ou détruit, undestructeurest invoqué.Avant de terminer un objet, les tâches de nettoyage comme la fermeture des connexions de base de données ou des fichiers sont terminées à l'aide du destructeur.

LeÉboueurDans Python gère automatiquement la mémoire.Par exemple, lorsqu'un objet n'est plus pertinent, il efface la mémoire.

Dans Python, le destructeur est entièrement automatique et jamais appelé manuellement.Dans les deux scénarios suivants, le destructeur est appelé -

  • Lorsqu'un objet n'est plus pertinent ou qu'il sort de la portée
  • Le compteur de référence de l'objet atteint zéro.

En utilisant la méthode __del __ ()

Dans Python, un destructeur est défini en utilisant la fonction spécifique __del __ ().Par exemple, lorsque nous exécutons le nom de l'objet Del, le destructeur de l'objet est automatiquement appelé, puis il obtient des ordures collectées.

Exemple 1

Voici un exemple de destructeur en utilisant la méthode __del __ () -

# Création d'une classe nommée Destructorclasse destructeur:# initialisation de la classe def __init__(soi): imprimer ("Objet est créé");# appeler le destructeur def __du__(soi): imprimer ("L'objet est détruit");# Créer un objetObjet=destructeur();# Suppression de l'objetduObjet;

Sortir

Voici une sortie du code ci-dessus-

Objet est créé l'objet est détruit

Note- Le destructeur dans le code ci-dessus est invoqué soit après la fin du programme, soit lorsque les références à l'objet sont supprimées.Cela indique que le nombre de références de l'objet tombe à zéro maintenant plutôt que lorsqu'il quitte la portée.

Exemple 2

Dans l'exemple suivant, nous utiliserons le mot-clé del de Python pour détruire les objets définis par l'utilisateur -

classe destructeur:Nombres= dix def nombres de nombres(soi): retour "@" + Str(Nombres)dudestructeurimprimer(destructeur)

Sortir

Voici une sortie du code ci-dessus-

NameError: le nom «Destructor» n'est pas défini

Nous obtenons l'erreur ci-dessus à mesure que le «destructeur» est détruit.

Exemple 3

Dans l'exemple suivant, nous verrons -

  • Comment utiliser le destructeur
  • Lorsque nous supprimons l'objet, comment le destructeur est appelé?

classe destructeur:# Utilisation du constructeur def __init__(soi,nom): imprimer('À l'intérieur du constructeur')soi.nom=nomimprimer('L'objet est initialisé') def montrer(soi): imprimer('Le nom est',soi.nom) # Utilisation de Destructor def __du__(soi): imprimer('À l'intérieur du destructeur') imprimer('L'objet est détruit') # Créer un objetd=destructeur('Détruit')d.montrer()# Suppression de l'objetdud

Sortir

Nous avons fait un objet en utilisant le code ci-dessus.Une variable de référence appelée D est utilisée pour identifier l'objet nouvellement généré.Lorsque la référence à l'objet est détruite ou que son nombre de références est 0, le destructeur a été appelé.

À l'intérieur du constructorobject est initialisé le nom est détruit

Choses à garder à l'esprit du destructeur

  • Lorsque le nombre de références d'un objet atteint 0, la méthode __del__ est invoquée pour cet objet.
  • Lorsque l'application se ferme ou que nous supprimons manuellement toutes les références à l'aide du mot clé Del, le nombre de références pour cet objet tombe à zéro.
  • Lorsque nous supprimons une référence d'objet, le destructeur ne sera pas appelé.Il ne s'exécutera pas tant que toutes les références aux objets ne seront pas supprimées.

Exemple

Utilisons l'exemple pour saisir les principes mentionnés ci-dessus -

  • En utilisant d = destructor ("détruit"), créez d'abord un objet pour la classe étudiante.
  • Ensuite, donnez la référence de l'objet D à un nouvel objet D1, en utilisant D1 = D
  • Maintenant, le même objet est référencé par les variables D et D1.
  • Après cela, nous avons supprimé la référence d.
  • Afin de comprendre que les destructeurs ne fonctionnent que lorsque toutes les références à l'objet sont détruites, nous avons ajouté une période de sommeil de 10 secondes au thread principal.

importertempsclasse destructeur:# Utilisation du constructeur def __init__(soi,nom): imprimer('À l'intérieur du constructeur')soi.nom=nomimprimer('L'objet est initialisé') def montrer(soi): imprimer('Le nom est',soi.nom) # Utilisation de Destructor def __du__(soi): imprimer('À l'intérieur du destructeur') imprimer('L'objet est détruit') # Créer un objetd=destructeur('Détruit')# Création d'une nouvelle référence où la référence pointe à la fois vers le même objetD1=dd.montrer()# Suppression de l'objet Ddud# ajout de sommeil et observant la sortietemps.dormir(dix)imprimer('Après avoir dormi pendant 10 secondes')D1.montrer()

Sortir

Les destructeurs ne sont appelés que, comme vous pouvez le voir dans la sortie, une fois que toutes les références aux objets sont supprimées.

De plus, le destructeur est appelé une fois le programme terminé la course et l'objet est prêt pour le collecteur des ordures.(Autrement dit, nous n'avons pas explicitement utilisé Del D1 pour supprimer la référence de l'objet D1).

À l'intérieur du ConstructorObject est initialisé, le nom est détruit après avoir dormi pendant 10 secondes, le nom est détruit

References

Top Articles
Latest Posts
Article information

Author: Golda Nolan II

Last Updated: 07/12/2023

Views: 6476

Rating: 4.8 / 5 (78 voted)

Reviews: 85% of readers found this page helpful

Author information

Name: Golda Nolan II

Birthday: 1998-05-14

Address: Suite 369 9754 Roberts Pines, West Benitaburgh, NM 69180-7958

Phone: +522993866487

Job: Sales Executive

Hobby: Worldbuilding, Shopping, Quilting, Cooking, Homebrewing, Leather crafting, Pet

Introduction: My name is Golda Nolan II, I am a thoughtful, clever, cute, jolly, brave, powerful, splendid person who loves writing and wants to share my knowledge and understanding with you.