logo

Destructors in Python

De gebruikers bellen Destructor voor het vernietigen van het object. In Python hebben ontwikkelaars mogelijk niet zoveel destructors nodig als in de C++-taal. Dit komt omdat Python een garbage collector heeft waarvan de functie het geheugenbeheer automatisch afhandelt.

In dit artikel bespreken we hoe de destructors in Python werken en wanneer de gebruikers ze kunnen gebruiken.

De __van de__() functie wordt gebruikt als de destructorfunctie in Python . De gebruiker kan bellen met de __van de__() functioneert wanneer alle referenties van het object zijn verwijderd en het wordt verzameld als afval.

Syntaxis:

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

De gebruikers moeten er ook rekening mee houden dat de verwijzing naar de objecten ook wordt verwijderd wanneer het object uit de verwijzing verdwijnt of wanneer de code eindigt.

In het volgende voorbeeld gebruiken we de functie __del__() en het sleutelwoord del om alle referenties van het object te verwijderen, zodat de destructor er automatisch bij betrokken wordt.

Bijvoorbeeld:

 # 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 

Uitgang:

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

Uitleg -

In de bovenstaande code heeft de destructor aangeroepen wanneer de verwijzingen naar het object zijn verwijderd of nadat het programma is beëindigd. Dit betekent dat het referentieaantal voor het object nul wordt en niet wanneer het object buiten bereik raakt. We zullen dit uitleggen aan de hand van het volgende voorbeeld.

We kunnen ook opmerken dat de destructor wordt aangeroepen na het einde van het programma.

Voorbeeld:

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

Uitgang:

 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. 

In het volgende voorbeeld zullen we zien dat wanneer de functie() wordt aangeroepen, deze de instantie van klasse Zebra zal creëren, die zichzelf doorgeeft aan klasse Lion, die vervolgens de verwijzing naar de klasse Zebra zal instellen, en dit zal resulteren in de cirkelreferentie.

Voorbeeld:

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

Uitgang:

 Zebra is dead 

Over het algemeen zal de Garbage collector van Python, die wordt gebruikt voor het detecteren van dit soort cyclische referenties, de referentie ook verwijderen. Maar in het bovenstaande voorbeeld wordt de aangepaste destructor gebruikt om dit item als oninbaar te markeren.

In eenvoudige taal betekent dit dat de vuilnisophaler niet weet in welke volgorde de voorwerpen moeten worden vernietigd en dat hij ze dus achterlaat. Als de instances van de gebruikers dus betrokken zijn bij deze kringverwijzing, blijven ze in het geheugen opgeslagen zolang de applicatie draait.

Conclusie

In dit artikel hebben we de functie van Destructors in Python uitgelegd en hoe de gebruikers deze kunnen gebruiken voor het verwijderen van objecten waarvan de referenties al uit het geheugen zijn verwijderd.