
Beaucoup de programmeurs Python pensent que l'exécution de del objet supprime toujours un objet.
Mais ce n'est PAS vrai.
Un peu de contexte…
La méthode magique __del__ est utilisée pour définir le comportement lorsqu'un objet est sur le point d'être détruit par l'interpréteur Python.
Cependant, il peut parfois être nécessaire de définir des actions de nettoyage additionnelles pour un objet.
Cela peut être réalisé en utilisant la méthode __del__.
Cette méthode est invoquée automatiquement juste avant que la mémoire d'un objet ne soit libérée.
Ainsi, en définissant cette méthode dans ta classe, tu peux ajouter une fonctionnalité personnalisée lors de la suppression d'un objet.
Comme montré à la ligne 5, la suppression de l'objet n'a rien affiché de ce qui était spécifié dans __del__.
Cela signifie que l'objet n'a pas été supprimé.
Mais un résultat a bien été produit la seconde fois (lignes 7-8).
Pourquoi cela se produit-il ?
Lorsque nous exécutons del var :
Python ne supprime pas toujours l'objet
À la place, il supprime le nom
varde la portée couranteEnfin, il réduit de
1le nombre de références vers cet objet
C'est UNIQUEMENT lorsque le nombre de références vers un objet devient 0 que l'objet est supprimé.
Par conséquent, __del__ est exécuté.
Note : Ce comportement est fondamental pour comprendre la gestion de la mémoire en Python.

L'objet est supprimé lorsque les références deviennent nulles
Cela explique le comportement du code précédent, je te le remets ci-dessous.

Lorsque nous avons supprimé la première référence (del objectA), l'objet était toujours référencé par objectB.
À ce moment-là, le nombre de références vers cet objet n'était donc pas nul.
Mais après la suppression de la seconde référence (del objectB), Python n'avait plus aucune référence vers l'objet.
Résultat : la méthode magique __del__ a été appelée.
À retenir…
❌ del var n'appelle pas toujours __del__ et ne supprime pas nécessairement l'objet.
✅ Voici ce qu'il fait réellement :
Il supprime le nom de variable (
var) de la portée couranteIl réduit de 1 le compteur de références de l'objet
Si le compteur atteint zéro, l'objet est supprimé (et
__del__est alors exécuté)
👉🏼 À toi : Quelles autres idées reçues sur Python te semblent importantes à clarifier ?
Envie d'aller plus loin ? DataXp t'attend : formations et parcours pour progresser en data science, machine learning et IA.


