logo

Destruktori u Pythonu

Korisnici pozivaju Destructor za uništavanje objekta. U Pythonu programeri možda neće trebati destruktore koliko su potrebni u jeziku C++. To je zato što Python ima skupljač smeća čija je funkcija automatsko upravljanje memorijom.

U ovom ćemo članku raspravljati o tome kako rade destruktori u Pythonu i kada ih korisnici mogu koristiti.

The __od__() funkcija se koristi kao funkcija destruktora u Piton . Korisnik može nazvati __od__() funkcija kada su sve reference objekta izbrisane i on postaje sakupljač smeća.

Sintaksa:

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

Korisnici također trebaju imati na umu da se referenca na objekte također briše kada objekt izađe iz reference ili kada kod završi.

U sljedećem primjeru koristit ćemo funkciju __del__() i ključnu riječ del za brisanje svih referenci objekta tako da destruktor uključuje automatski.

kat timpf sestra

Na primjer:

 # 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 

Izlaz:

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

Objašnjenje -

U gornjem kodu, destruktor je pozvao kada su reference na objekt izbrisane ili nakon završetka programa. To znači da broj referenci za objekt postaje nula, a ne kada objekt izađe iz opsega. To ćemo objasniti pokazivanjem sljedećeg primjera.

Također možemo primijetiti da se destruktor poziva nakon završetka programa.

Primjer:

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

Izlaz:

 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. 

Sada ćemo u sljedećem primjeru vidjeti da kada se funkcija() pozove, ona će stvoriti instancu klase Zebra, koja se prosljeđuje klasi Lion, koja će zatim postaviti referencu na klasu Zebra, a to će rezultirati kružna referenca.

Primjer:

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

Izlaz:

 Zebra is dead 

Općenito, skupljač smeća Pythona, koji se koristi za otkrivanje ovih vrsta cikličkih referenci, također će ukloniti referencu. No, u gornjem primjeru, prilagođeni destruktor koristi se za označavanje ove stavke kao nenaplative.

Jednostavnim jezikom, to znači da sakupljač smeća ne zna redoslijed kojim objekt treba uništiti, pa ih napušta. Dakle, ako su instance korisnika uključene u ovu kružnu referencu, one će ostati pohranjene u memoriji sve dok se aplikacija izvodi.

Zaključak

U ovom smo članku objasnili funkciju destruktora u Pythonu i kako ih korisnici mogu koristiti za brisanje objekata čije su reference već uklonjene iz memorije.