Introduction à Destructor en Python
Les constructeurs et les destructeurs sont deux concepts importants en python. Les constructeurs sont appelés lorsque l'objet d'une classe est créé. Cependant, les destructeurs sont appelés lorsque l'objet d'une classe est détruit. Par conséquent, il n'est pas faux de dire que les constructeurs sont l'opposé des destructeurs. Python, étant un langage de programmation orienté objet, Constructors and Destructors fait également partie de ce langage.
Les destructeurs ne sont pas autant utilisés en python que Java et C ++. Mais le savoir fait une base encore plus solide en python.
Les destructeurs peuvent se révéler très utiles en ce qui concerne le travail de santé mentale du programme. Par exemple: libérer les ressources utilisées avant de sortir du programme comme libérer des mémoires, fermer des fichiers, etc.
Le mot clé utilisé pour définir Destructor est: __del __ () mot clé:
Syntaxe:
def __del__(self):
#destructor body
Comme on peut le voir, __del__ est le mot-clé utilisé pour définir le destructeur. Quand il est appelé, toute référence à cet objet est supprimée, également appelée garbage collection.
Exemples de destructeurs en Python
Voyons différents exemples de destructeur en python, pour mieux comprendre:
Exemple 1
class Grocery:
# Initializing
def __init__(self):
print('Grocery created.')
# Deleting (Calling destructor)
def __del__(self):
print('Destructor called, Grocery deleted.')
obj = Grocery()
del obj
Production:
«Épicerie» est la classe définie avec ses méthodes spéciales: constructeur et destructeur.
Ainsi, on peut voir une fois l'objet de la classe "Épicerie" créé. Il appelle automatiquement __init__, qui est le constructeur de la classe. Cependant, lorsque «del obj» est exécuté afin de supprimer un objet, la méthode destructrice est appelée automatiquement.
Exemple # 2
class Text:
def __del__(self):
print "Text deleted"
a = Text()
del a
a = Text()
b = a
del b
del a
Production:
Le texte est une classe, «a» est une référence d'objet à la classe. «B» copie locale de cette référence «a». Ainsi, lorsque b est supprimé, la méthode n'est pas appelée, car elle contient simplement la copie locale.
Avantages de Destructor en Python
Comme dit précédemment, le destructeur n'est pas autant utilisé en python qu'il l'est en Java, C ++. Cependant, le concept reste le même. Voici quelques avantages de son utilisation dans les programmes:
- Les objets inutiles sont supprimés automatiquement. Cela libère l'espace mémoire connu sous le nom de garbage collection.
- L'avantage réside également dans le fait qu'il invoque automatiquement.
Certaines étapes à prendre en compte lors de l'utilisation du destructeur:
1. Python ne connaît pas l'ordre dans lequel la destruction d'objets sera plus sûre et qui peut contenir des références circulaires les unes aux autres. Pour cette raison, les gens recommandent d'utiliser explicitement «close» après chaque fonction. Mais en cas d'exceptions, la gestion de la méthode close devient gênante. Il est donc préférable d'utiliser des destructeurs, en gardant à l'esprit les références cycliques.
2. Références cycliques si elles ne sont pas bien gérées, il y a des chances d'abstractions qui fuient, plus une mauvaise conception.
La meilleure chose est: les ressources doivent être gérées par l'objet de niveau le plus bas de la classe.
3. Quand quelqu'un a un besoin urgent d'utiliser des références cycliques à des objets dans du code complexe, Python fournit une bonne solution sous la forme d'un nom de module: Cela signifie que des références faibles sont fournies au référent, ce qui aide finalement à implémenter le cache et à ne plus maintenir le grand objet en vie. Lorsqu'un grand objet n'est pas vivant, cela signifie qu'il apparaît dans le cache.
Voyons cela à travers un petit code pour obtenir une compréhension lucide:
Code:
import weakref
class C:
def method(self):
print("Hi!method called!")
c = C()
r = weakref.ref(c)
print(c)
print(r)
Production:
Comme on peut le voir, «r» est une faible référence à l'objet «c».
Si nous faisons référence à la méthode «r» comme c2 = r (). Alors «c» et «c2» devraient être les mêmes, car se réfère à la même chose. Voir l'exemple ci-dessous:
En cas de suppression de l'objet principal, l'objet de référence perd son existence. Voir l'exemple ci-dessous:
Comme on peut le remarquer, les résultats d'impression (r ()) sont «Aucun». Dans ce cas:
gc.collect () donnera 0.
4. __del__ ne devrait pas être confondu avec del en python. __del__ est une méthode spéciale d'une classe qui est destructrice et «del» est utilisé pour détruire une variable définie dans l'environnement python. Les deux sont deux choses complètement différentes.
Comme:
xx = 10
del xx
Conclusion
Après avoir parcouru le contenu ci-dessus, nous pouvons dire que les constructeurs et les destructeurs sont une partie cruciale de Python. Destructor joue un rôle pivot dans la gestion de la mémoire, où il effectue de nombreuses tâches de nettoyage sur les objets utilisés dans la programmation. Le traitement de petits programmes peut ne pas vous donner une image réelle de l'utilisation de destructeurs. Cependant, tout en traitant des programmes de production ou de toute ligne de code complexe, l'importance des destructeurs peut être clairement comprise, car l'utilisation de la mémoire y devient très importante. Garder à l'esprit l'idée de référence cyclique peut absolument conduire à une bonne conception tout en travaillant avec des destructeurs.
Articles recommandés
Ceci est un guide de Destructor en Python. Ici, nous discutons de la syntaxe, des avantages ainsi que des différents exemples de destructeur de python. Vous pouvez également consulter les articles suivants pour en savoir plus -
- Classe abstraite en Python
- Éditeurs Python
- Déclaration Python Break
- Échange en Python
- Exemples de permutation en PHP
- Déclaration de rupture en JavaScript
- Guide complet de Destructor en PHP avec des exemples