logo

Tuhoajat Pythonissa

Käyttäjät soittavat Destructorille kohteen tuhoamiseksi. Pythonissa kehittäjät eivät ehkä tarvitse tuhoajia niin paljon kuin C++-kielessä. Tämä johtuu siitä, että Pythonissa on roskakeräin, jonka tehtävänä on käsitellä muistinhallintaa automaattisesti.

lajittelualgoritmit yhdistävät lajittelun

Tässä artikkelissa keskustelemme siitä, kuinka Pythonin tuhoajat toimivat ja milloin käyttäjät voivat käyttää niitä.

The __ of the__() -funktiota käytetään destruktorina Python . Käyttäjä voi soittaa __ of the__() toiminto, kun kaikki objektin viittaukset on poistettu ja siitä tulee roskakeräys.

Syntaksi:

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

Käyttäjien tulee myös huomioida, että viittaus objekteihin poistetaan myös, kun objekti poistuu viitteestä tai kun koodi päättyy.

Seuraavassa esimerkissä käytämme __del__()-funktiota ja del-avainsanaa kaikkien objektin viittausten poistamiseen, jotta tuhoaja osallistuu automaattisesti.

Esimerkiksi:

 # 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 

Lähtö:

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

Selitys -

Yllä olevassa koodissa tuhoaja on kutsunut, kun viittaukset objektiin on poistettu tai ohjelman päätyttyä. Tämä tarkoittaa, että objektin viitemäärästä tulee nolla eikä silloin, kun objekti menee soveltamisalan ulkopuolelle. Selitämme tämän seuraavan esimerkin avulla.

Voimme myös huomata, että destruktoria kutsutaan ohjelman päätyttyä.

Esimerkki:

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

Lähtö:

 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. 

Nyt seuraavassa esimerkissä näemme, että kun funktiota () kutsutaan, se luo luokan Zebra ilmentymän, joka siirtyy luokkaan Lion, joka sitten asettaa viittauksen luokkaan Zebra, ja se johtaa pyöreä viittaus.

Esimerkki:

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

Lähtö:

 Zebra is dead 

Yleensä Pythonin roskienkerääjä, jota käytetään tämäntyyppisten syklisten viittausten havaitsemiseen, poistaa myös viitteen. Mutta yllä olevassa esimerkissä mukautettua tuhoajaa käytetään tämän kohteen merkitsemiseen ei-kerättäväksi.

Yksinkertaisesti sanottuna se tarkoittaa, että jätteenkerääjä ei tiedä, missä järjestyksessä esine tulisi tuhota, joten se jättää heidät. Joten jos käyttäjien esiintymät ovat mukana tässä pyöreässä viittauksessa, ne säilyvät muistissa niin kauan kuin sovellus toimii.

Johtopäätös

Tässä artikkelissa selitimme Destructors-toiminnon Pythonissa ja kuinka käyttäjät voivat käyttää niitä niiden objektien poistamiseen, joiden viittaukset on jo poistettu muistista.