logo

Distruttori in Python

Gli utenti chiamano Destructor per distruggere l'oggetto. In Python, gli sviluppatori potrebbero non aver bisogno dei distruttori tanto quanto sono necessari nel linguaggio C++. Questo perché Python ha un garbage collector la cui funzione è gestire automaticamente la gestione della memoria.

In questo articolo discuteremo come funzionano i distruttori in Python e quando gli utenti possono usarli.

IL __del__() viene utilizzata come funzione di distruzione in Pitone . L'utente può chiamare il __del__() funzione quando tutti i riferimenti dell'oggetto sono stati eliminati e diventa Garbage Collection.

Sintassi:

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

Gli utenti devono inoltre tenere presente che il riferimento agli oggetti viene eliminato anche quando l'oggetto esce dal riferimento o quando termina il codice.

altrimenti bash

Nell'esempio seguente utilizzeremo la funzione __del__() e la parola chiave del per cancellare tutti i riferimenti dell'oggetto in modo che il distruttore intervenga automaticamente.

Per esempio:

 # 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 

Produzione:

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

Spiegazione -

mysql mostra tutti gli utenti

Nel codice sopra, il distruttore ha chiamato quando i riferimenti all'oggetto sono stati cancellati o dopo la fine del programma. Ciò significa che il conteggio dei riferimenti per l'oggetto diventa zero e non quando l'oggetto esce dall'ambito. Lo spiegheremo mostrando il prossimo esempio.

Possiamo anche notare che il distruttore viene chiamato dopo la fine del programma.

Esempio:

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

Produzione:

 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. 

Ora nel prossimo esempio, vedremo che quando viene chiamata la funzione(), creerà l'istanza della classe Zebra, che si passa alla classe Lion, che poi imposterà il riferimento alla classe Zebra, e risulterà in il riferimento circolare.

Esempio:

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

Produzione:

 Zebra is dead 

In generale, anche il Garbage Collector di Python, utilizzato per rilevare questi tipi di riferimenti ciclici, rimuoverà il riferimento. Ma, nell'esempio precedente, il distruttore personalizzato viene utilizzato per contrassegnare questo oggetto come non collezionabile.

In parole povere, significa che il garbage collector non conosce l'ordine in cui l'oggetto dovrebbe essere distrutto, quindi lo lascia. Quindi, se le istanze degli utenti sono coinvolte in questo riferimento circolare, rimarranno archiviate in memoria per tutto il tempo in cui l'applicazione funzionerà.

intero Java

Conclusione

In questo articolo abbiamo spiegato la funzione dei distruttori in Python e come gli utenti possono usarli per eliminare gli oggetti i cui riferimenti sono già rimossi dalla memoria.