logo

Destruktoren in Python

Die Benutzer rufen den Destruktor auf, um das Objekt zu zerstören. In Python benötigen Entwickler möglicherweise nicht so viele Destruktoren wie in der Sprache C++. Dies liegt daran, dass Python über einen Garbage Collector verfügt, dessen Funktion die automatische Speicherverwaltung übernimmt.

In diesem Artikel besprechen wir, wie die Destruktoren in Python funktionieren und wann die Benutzer sie verwenden können.

Marquee-HTML

Der __des__() Funktion wird als Destruktorfunktion in verwendet Python . Der Benutzer kann die anrufen __des__() Funktion, wenn alle Referenzen des Objekts gelöscht wurden und es in die Garbage Collection aufgenommen wird.

Syntax:

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

Die Benutzer sollten außerdem beachten, dass die Referenz auf die Objekte auch gelöscht wird, wenn das Objekt die Referenz verlässt oder der Code endet.

Array vs. Arraylist

Im folgenden Beispiel verwenden wir die Funktion __del__() und das Schlüsselwort del, um alle Referenzen des Objekts zu löschen, sodass der Destruktor automatisch aktiviert wird.

Zum Beispiel:

 # 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 

Ausgabe:

 The class called Animals is CREATED. The destructor is called for deleting the Animals. 

Erläuterung -

Im obigen Code wurde der Destruktor aufgerufen, wenn die Verweise auf das Objekt gelöscht wurden oder nachdem das Programm beendet wurde. Dies bedeutet, dass der Referenzzähler für das Objekt Null wird und nicht, wenn das Objekt den Gültigkeitsbereich verlässt. Wir werden dies anhand des nächsten Beispiels erläutern.

Schlaf in js

Wir können auch feststellen, dass der Destruktor nach dem Beenden des Programms aufgerufen wird.

Beispiel:

 # 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') 

Ausgabe:

 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. 

Im nächsten Beispiel werden wir nun sehen, dass beim Aufruf der Funktion() die Instanz der Klasse Zebra erstellt wird, die sich selbst an die Klasse Lion übergibt, die dann den Verweis auf die Klasse Zebra setzt und daraus resultiert der Zirkelverweis.

Beispiel:

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

Ausgabe:

Teilzeichenfolge in Java
 Zebra is dead 

Im Allgemeinen entfernt der Garbage Collector von Python, der zum Erkennen dieser Art von zyklischen Referenzen verwendet wird, die Referenz auch. Im obigen Beispiel wird jedoch der benutzerdefinierte Destruktor verwendet, um diesen Artikel als nicht abholbar zu markieren.

Vereinfacht ausgedrückt bedeutet dies, dass der Garbage Collector nicht weiß, in welcher Reihenfolge das Objekt zerstört werden soll, und ihn daher verlässt. Wenn also die Instanzen der Benutzer an diesem Zirkelverweis beteiligt sind, bleiben sie so lange im Speicher gespeichert, wie die Anwendung ausgeführt wird.

Abschluss

In diesem Artikel haben wir die Funktion von Destruktoren in Python erklärt und wie Benutzer sie zum Löschen von Objekten verwenden können, deren Referenzen bereits aus dem Speicher entfernt wurden.