logo

Destruktorji v Pythonu

Uporabniki pokličejo Destructor za uničenje predmeta. V Pythonu razvijalci morda ne bodo potrebovali destruktorjev toliko, kot jih potrebuje jezik C++. To je zato, ker ima Python zbiralnik smeti, katerega funkcija samodejno upravlja upravljanje pomnilnika.

V tem članku bomo razpravljali o tem, kako delujejo destruktorji v Pythonu in kdaj jih lahko uporabniki uporabljajo.

The __od__() funkcija se uporablja kot funkcija destruktorja v Python . Uporabnik lahko pokliče na __od__() funkcijo, ko so izbrisani vsi sklice na objekt in postane zbiralnik smeti.

Sintaksa:

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

Uporabniki naj tudi upoštevajo, da se sklicevanje na objekte izbriše tudi, ko predmet izstopi iz sklica ali ko se koda konča.

V naslednjem primeru bomo uporabili funkcijo __del__() in ključno besedo del za brisanje vseh referenc objekta, tako da se bo destruktor samodejno vključil.

Na primer:

 # 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 

Izhod:

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

Pojasnilo -

V zgornji kodi je destruktor poklical, ko so bili sklici na objekt izbrisani ali ko je bil program končan. To pomeni, da štetje sklicev za objekt postane nič in ne, ko objekt gre izven obsega. To bomo pojasnili s prikazom naslednjega primera.

Opazimo lahko tudi, da se destruktor pokliče po koncu programa.

primer:

vso srečo
 # 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') 

Izhod:

 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. 

V naslednjem primeru bomo videli, da ko je funkcija() poklicana, bo ustvarila primerek razreda Zebra, ki se posreduje razredu Lion, ta pa bo nato nastavil sklic na razred Zebra, rezultat pa bo krožno sklicevanje.

primer:

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

Izhod:

 Zebra is dead 

Na splošno bo zbiralnik smeti v Pythonu, ki se uporablja za zaznavanje teh vrst cikličnih referenc, prav tako odstranil referenco. Toda v zgornjem primeru je destruktor po meri uporabljen za označevanje tega predmeta kot neizterljivega.

V preprostem jeziku to pomeni, da pobiralec smeti ne ve, v kakšnem vrstnem redu naj se predmeti uničijo, zato jih zapusti. Torej, če so primerki uporabnikov vključeni v to krožno referenco, bodo ostali shranjeni v pomnilniku, dokler se bo aplikacija izvajala.

Zaključek

V tem članku smo razložili funkcijo destruktorjev v Pythonu in kako jih lahko uporabniki uporabijo za brisanje predmetov, katerih reference so že odstranjene iz pomnilnika.