logo

Destruktorer i Python

Brukerne ringer Destructor for å ødelegge objektet. I Python trenger utviklere kanskje ikke destruktorer så mye det er nødvendig i C++-språket. Dette er fordi Python har en søppelsamler hvis funksjon er å håndtere minnehåndtering automatisk.

I denne artikkelen vil vi diskutere hvordan destruktorene i Python fungerer og når brukerne kan bruke dem.

De __av__() funksjon brukes som destruktorfunksjon i Python . Brukeren kan ringe til __av__() funksjon når alle referansene til objektet er slettet, og det blir søppel samlet.

java samlinger java

Syntaks:

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

Brukerne bør også merke seg at referansen til objektene også slettes når objektet går ut av referansen eller når koden slutter.

I det følgende eksempelet vil vi bruke funksjonen __del__() og del nøkkelordet for å slette alle referansene til objektet slik at 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 

Produksjon:

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

Forklaring -

nettverk og typer nettverk

I koden ovenfor har destruktoren kalt når referansene til objektet er slettet eller etter at programmet ble avsluttet. Dette betyr at referansetellingen for objektet blir null og ikke når objektet går utenfor scope. Vi vil forklare dette ved å vise neste eksempel.

Vi kan også legge merke til at destruktoren kalles opp etter programmets slutt.

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

Produksjon:

 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. 

Nå i neste eksempel vil vi se at når funksjonen() kalles, vil den lage forekomsten av klassen Zebra, som sender seg selv til klassen Lion, som deretter vil sette referansen til klassen Zebra, og det vil resultere i den sirkulære referansen.

sed kommando

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

Produksjon:

 Zebra is dead 

Generelt vil Garbage Collector of Python, som brukes til å oppdage denne typen sykliske referanser, også fjerne referansen. Men i eksemplet ovenfor brukes den tilpassede destruktoren for å merke denne gjenstanden som uinnhentelig.

På enkelt språk betyr det at søppelsamleren ikke vet i hvilken rekkefølge gjenstanden skal destrueres, så den forlater dem. Så hvis forekomstene til brukerne er involvert i denne sirkulære referansen, vil de forbli lagret i minnet så lenge applikasjonen kjører.

Konklusjon

I denne artikkelen forklarte vi funksjonen til Destructors i Python og hvordan brukerne kan bruke dem til å slette objekter hvis referanser allerede er fjernet fra minnet.