Los usuarios llaman a Destructor para destruir el objeto. En Python, es posible que los desarrolladores no necesiten destructores tanto como en el lenguaje C++. Esto se debe a que Python tiene un recolector de basura cuya función es manejar la gestión de la memoria automáticamente.
En este artículo, discutiremos cómo funcionan los destructores en Python y cuándo los usuarios pueden usarlos.
El __del__() La función se utiliza como función destructora en Pitón . El usuario puede llamar al __del__() funciona cuando todas las referencias del objeto se han eliminado y se convierte en basura recolectada.
Sintaxis:
def __del__(self): # the body of destructor will be written here.
Los usuarios también deben tener en cuenta que la referencia a los objetos también se elimina cuando el objeto sale de la referencia o cuando finaliza el código.
En el siguiente ejemplo, usaremos la función __del__() y la palabra clave del para eliminar todas las referencias del objeto para que el destructor participe automáticamente.
Por ejemplo:
# 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
Producción:
The class called Animals is CREATED. The destructor is called for deleting the Animals.
Explicación -
En el código anterior, el destructor ha llamado cuando se eliminan las referencias al objeto o después de finalizar el programa. Esto significa que el recuento de referencias del objeto se vuelve cero y no cuando el objeto sale del alcance. Explicaremos esto mostrando el siguiente ejemplo.
También podemos notar que el destructor se llama después de finalizar el programa.
Ejemplo:
# 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')
Producción:
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.
Ahora, en el siguiente ejemplo, veremos que cuando se llama a la función(), creará la instancia de la clase Zebra, que se pasa a la clase Lion, que luego establecerá la referencia a la clase Zebra y dará como resultado la referencia circular.
Ejemplo:
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()
Producción:
Zebra is dead
En general, el recolector de basura de Python, que se utiliza para detectar este tipo de referencias cíclicas, también eliminará la referencia. Pero, en el ejemplo anterior, el destructor personalizado se utiliza para marcar este artículo como no coleccionable.
En lenguaje sencillo, significa que el recolector de basura no sabe el orden en que se deben destruir los objetos, por lo que los abandona. Entonces, si las instancias de los usuarios están involucradas en esta referencia circular, permanecerán almacenadas en la memoria mientras se ejecute la aplicación.
Conclusión
En este artículo, explicamos la función de los destructores en Python y cómo los usuarios pueden usarlos para eliminar objetos cuyas referencias ya están eliminadas de la memoria.
látex de símbolo de derivada parcial