logo

Destructori în Python

Utilizatorii apelează la Destructor pentru distrugerea obiectului. În Python, dezvoltatorii ar putea să nu aibă nevoie de destructori atât de mult este necesar în limbajul C++. Acest lucru se datorează faptului că Python are un colector de gunoi a cărui funcție este gestionarea automată a memoriei.

În acest articol, vom discuta despre cum funcționează destructorii din Python și când îi pot folosi utilizatorii.

The __din __() funcția este utilizată ca funcție destructoare în Piton . Utilizatorul poate apela __din __() funcția atunci când toate referințele obiectului au fost șterse și acesta devine gunoi colectat.

Sintaxă:

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

De asemenea, utilizatorii ar trebui să rețină că referința la obiecte este ștearsă și atunci când obiectul iese din referință sau când codul se termină.

În exemplul următor, vom folosi funcția __del__() și cuvântul cheie del pentru ștergerea tuturor referințelor obiectului, astfel încât destructorul să implice automat.

De exemplu:

un milion în cifre
 # 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 

Ieșire:

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

Explicație -

În codul de mai sus, destructorul a apelat atunci când referințele la obiect sunt șterse sau după ce programul a fost încheiat. Aceasta înseamnă că numărul de referințe pentru obiect devine zero și nu atunci când obiectul iese din domeniul de aplicare. Vom explica acest lucru arătând următorul exemplu.

De asemenea, putem observa că destructorul este apelat după terminarea programului.

Exemplu:

cum să găsești numere blocate pe Android
 # 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') 

Ieșire:

 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. 

Acum, în exemplul următor, vom vedea că atunci când funcția() este apelată, va crea instanța clasei Zebra, care se trece la clasa Lion, care va seta apoi referința la clasa Zebra și va avea ca rezultat referința circulară.

Exemplu:

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

Ieșire:

 Zebra is dead 

În general, Garbage collector din Python, care este utilizat pentru detectarea acestor tipuri de referințe ciclice, va elimina și referința. Dar, în exemplul de mai sus, destructorul personalizat este folosit pentru a marca acest articol ca necolectabil.

Într-un limbaj simplu, înseamnă că gunoiul nu știe ordinea în care obiectul trebuie distrus, așa că îi părăsește. Deci, dacă instanțele utilizatorilor sunt implicate în această referință circulară, acestea vor rămâne stocate în memorie atâta timp cât aplicația va rula.

Concluzie

În acest articol, am explicat funcția Destructorilor în Python și modul în care utilizatorii le pot folosi pentru ștergerea obiectelor ale căror referințe sunt deja eliminate din memorie.