logo

Destruktorer i Python

Brugerne kalder Destructor for at ødelægge objektet. I Python har udviklere muligvis ikke brug for destruktorer, så meget det er nødvendigt i C++-sproget. Dette skyldes, at Python har en skraldeopsamler, hvis funktion er at håndtere hukommelseshåndtering automatisk.

I denne artikel vil vi diskutere, hvordan destruktorerne i Python fungerer, og hvornår brugerne kan bruge dem.

Det __af__() funktion bruges som destruktorfunktionen i Python . Brugeren kan ringe til __af__() funktion, når alle referencer til objektet er blevet slettet, og det bliver opsamlet affald.

java samlinger java

Syntaks:

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

Brugerne skal også bemærke, at referencen til objekterne også slettes, når objektet går ud af referencen, eller når koden slutter.

I det følgende eksempel vil vi bruge funktionen __del__() og nøgleordet del til at slette alle referencerne til objektet, så destruktoren involverer automatisk.

For eksempel:

 # 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 

Produktion:

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

Forklaring -

hvordan man konverterer en streng til en int

I ovenstående kode har destruktoren kaldt, når referencerne til objektet er slettet, eller efter programmet blev afsluttet. Det betyder, at referencetallet for objektet bliver nul og ikke når objektet går uden for scope. Vi vil forklare dette ved at vise det næste eksempel.

Vi kan også bemærke, at destruktoren kaldes efter programmets afslutning.

Eksempel:

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

Produktion:

 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. 

Nu i det næste eksempel vil vi se, at når funktionen() kaldes, vil den skabe instansen af ​​klassen Zebra, som overfører sig selv til klassen Lion, som så vil sætte referencen til klassen Zebra, og det vil resultere i den cirkulære reference.

aws rødforskydning

Eksempel:

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

Produktion:

 Zebra is dead 

Generelt vil Garbage collector of Python, som bruges til at detektere disse typer cykliske referencer, også fjerne referencen. Men i ovenstående eksempel bruges den brugerdefinerede destructor til at markere denne vare som ikke-indsamlingsbar.

I et simpelt sprog betyder det, at skraldemanden ikke kender den rækkefølge, hvori genstanden skal destrueres, så den forlader dem. Så hvis forekomsterne af brugerne er involveret i denne cirkulære reference, vil de forblive gemt i hukommelsen, så længe applikationen kører.

Konklusion

I denne artikel forklarede vi funktionen af ​​Destructors i Python, og hvordan brugerne kan bruge dem til at slette de objekter, hvis referencer allerede er fjernet fra hukommelsen.