logo

Destruktoriai Python

Dėl objekto sunaikinimo vartotojai skambina „Destructor“. Python programuotojams gali prireikti naikintuvų tiek, kiek jų reikia C++ kalba. Taip yra todėl, kad Python turi šiukšlių rinktuvą, kurio funkcija automatiškai tvarko atmintį.

Šiame straipsnyje aptarsime, kaip veikia Python destruktoriai ir kada vartotojai gali juos naudoti.

The __iš__() funkcija naudojama kaip destruktoriaus funkcija Python . Vartotojas gali skambinti __iš__() funkcija, kai visos objekto nuorodos yra ištrintos ir jis tampa šiukšlėmis.

Sintaksė:

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

Vartotojai taip pat turėtų atkreipti dėmesį, kad nuoroda į objektus taip pat ištrinama, kai objektas išeina iš nuorodos arba kai kodas baigiasi.

Šiame pavyzdyje mes naudosime funkciją __del__() ir raktinį žodį del, kad ištrintume visas objekto nuorodas, kad naikintojas įtrauktų automatiškai.

Pavyzdžiui:

 # 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 

Išvestis:

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

Paaiškinimas -

Aukščiau pateiktame kode destruktorius iškviečia, kai nuorodos į objektą ištrinamos arba pasibaigus programai. Tai reiškia, kad objekto nuorodų skaičius tampa lygus nuliui, o ne tada, kai objektas išeina iš taikymo srities. Tai paaiškinsime parodydami kitą pavyzdį.

Taip pat galime pastebėti, kad destruktorius iškviečiamas pasibaigus programai.

Pavyzdys:

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

Išvestis:

 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. 

Kitame pavyzdyje pamatysime, kad kai bus iškviesta funkcija (), ji sukurs klasės Zebra egzempliorių, kuris persiduos klasei Lion, kuri tada nustatys nuorodą į klasę Zebra, o rezultatas bus apskrito nuoroda.

Pavyzdys:

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

Išvestis:

 Zebra is dead 

Paprastai „Python“ šiukšlių rinkėjas, naudojamas tokio tipo ciklinėms nuorodoms aptikti, taip pat pašalins nuorodą. Tačiau aukščiau pateiktame pavyzdyje pasirinktinis naikintuvas naudojamas šiam elementui pažymėti kaip nesurenkamą.

Paprasta kalba reiškia, kad šiukšlių surinkėjas nežino, kokia tvarka objektas turi būti sunaikintas, todėl juos palieka. Taigi, jei vartotojų egzemplioriai yra įtraukti į šią žiedinę nuorodą, jie išliks atmintyje tol, kol veiks programa.

Išvada

Šiame straipsnyje paaiškinome „Python“ naikintuvų funkciją ir kaip vartotojai gali juos naudoti norėdami ištrinti objektus, kurių nuorodos jau pašalintos iš atminties.