logo

Destructors in Python

Els usuaris criden a Destructor per destruir l'objecte. A Python, és possible que els desenvolupadors no necessitin destructors tant com es necessita en el llenguatge C++. Això es deu al fet que Python té un col·lector d'escombraries la funció del qual és gestionar la gestió de la memòria automàticament.

En aquest article, parlarem de com funcionen els destructors de Python i quan els usuaris poden utilitzar-los.

El __del__() La funció s'utilitza com a funció destructor a Python . L'usuari pot trucar al __del__() funció quan s'han suprimit totes les referències de l'objecte i es converteix en escombraries.

classe de bombolles java

Sintaxi:

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

Els usuaris també han de tenir en compte que la referència als objectes també s'elimina quan l'objecte surt de la referència o quan acaba el codi.

En l'exemple següent, utilitzarem la funció __del__() i la paraula clau del per eliminar totes les referències de l'objecte de manera que el destructor s'impliqui automàticament.

Per exemple:

 # 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 

Sortida:

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

Explicació -

Al codi anterior, el destructor ha cridat quan s'esborren les referències a l'objecte o després d'acabar el programa. Això vol dir que el recompte de referència per a l'objecte esdevé zero i no quan l'objecte surt de l'abast. Ho explicarem mostrant el següent exemple.

També podem notar que el destructor es crida després de finalitzar el programa.

Exemple:

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

Sortida:

 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. 

Ara, en el següent exemple, veurem que quan es crida a la funció (), crearà la instància de la classe Zebra, que es passa a la classe Lion, que després establirà la referència a la classe Zebra i donarà lloc a la referència circular.

Exemple:

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

Sortida:

 Zebra is dead 

En general, el Garbage Collector de Python, que s'utilitza per detectar aquest tipus de referències cícliques, també eliminarà la referència. Però, a l'exemple anterior, el destructor personalitzat s'utilitza per marcar aquest article com a incoleccionable.

En llenguatge senzill, vol dir que el recol·lector d'escombraries no sap l'ordre en què s'ha de destruir l'objecte, per la qual cosa els deixa. Així, si les instàncies dels usuaris estan implicades en aquesta referència circular, romandran emmagatzemades a la memòria mentre s'executi l'aplicació.

Conclusió

En aquest article, vam explicar la funció dels Destructors a Python i com els usuaris poden utilitzar-los per eliminar els objectes les referències dels quals ja s'han eliminat de la memòria.