logo

Deštruktory v Pythone

Používatelia volajú Destructor, aby zničil objekt. V Pythone vývojári nemusia potrebovať deštruktory toľko, koľko je potrebné v jazyku C++. Je to preto, že Python má zberač odpadu, ktorého funkciou je správa pamäte automaticky.

V tomto článku budeme diskutovať o tom, ako fungujú deštruktory v Pythone a kedy ich môžu používatelia používať.

The __z__() funkcia sa používa ako funkcia deštruktora v Python . Používateľ môže zavolať na __z__() po vymazaní všetkých referencií objektu a objekt sa stane zhromaždeným odpadom.

Syntax:

chyba atribútu python
 def __del__(self): # the body of destructor will be written here. 

Používatelia by si tiež mali uvedomiť, že odkaz na objekty sa tiež vymaže, keď objekt vypadne z odkazu alebo keď sa kód skončí.

V nasledujúcom príklade použijeme funkciu __del__() a kľúčové slovo del na vymazanie všetkých referencií objektu, takže deštruktor sa automaticky zapojí.

Napríklad:

 # 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 

Výkon:

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

vysvetlenie -

Vo vyššie uvedenom kóde sa deštruktor zavolal, keď sú odkazy na objekt vymazané alebo po ukončení programu. To znamená, že počet referencií pre objekt sa stane nulovým a nie vtedy, keď objekt prekročí rozsah. Vysvetlíme si to na nasledujúcom príklade.

Môžeme si tiež všimnúť, že deštruktor sa volá po ukončení programu.

Príklad:

prevod reťazca na int
 # 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') 

Výkon:

 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. 

Teraz v ďalšom príklade uvidíme, že keď sa zavolá funkcia function(), vytvorí inštanciu triedy Zebra, ktorá prejde do triedy Lion, ktorá potom nastaví odkaz na triedu Zebra a výsledkom bude kruhový odkaz.

Príklad:

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

Výkon:

 Zebra is dead 

Vo všeobecnosti, zberač odpadkov Pythonu, ktorý sa používa na zisťovanie týchto typov cyklických odkazov, tiež odstráni referenciu. Ale vo vyššie uvedenom príklade sa vlastný deštruktor používa na označenie tejto položky ako nevyberateľnej.

V jednoduchom jazyku to znamená, že smetiar nepozná poradie, v akom má byť objekt zničený, a tak ich nechá. Takže, ak sú inštancie používateľov zapojené do tohto kruhového odkazu, zostanú uložené v pamäti tak dlho, ako bude aplikácia bežať.

Záver

V tomto článku sme vysvetlili funkciu deštruktorov v Pythone a ako ich môžu používatelia použiť na mazanie objektov, ktorých referencie sú už odstránené z pamäte.