Constructores
1. Qué es un constructor? #
Un constructor es un método especial que se llama automáticamente cuando se crea un nuevo objeto de una clase. En Python, el constructor se define con el método __init__(). El propósito del constructor es inicializar los atributos del objeto cuando se crea.
2. Qué es un destructor? #
Un destructor es un método especial que se llama automáticamente cuando un objeto está a punto de ser destruido o cuando ya no se necesita. En Python, el destructor se define con el método __del__(). El propósito del destructor es realizar cualquier limpieza necesaria, como cerrar archivos o liberar recursos.
3. Ejemplos de constructores y destructores #
Ejemplo con constructor init #
1class Persona: 2 def __init__(self, nombre, edad): 3 self.nombre = nombre 4 self.edad = edad 5 print(f"Persona {self.nombre}, de {self.edad} años ha sido creada.") 6 7 def saludar(self): 8 print(f"Hola, me llamo {self.nombre}.") 9 10# Crear un objeto de la clase Persona 11persona1 = Persona("Ana", 30) 12persona1.saludar()Salida de consola Persona Ana, de 30 años ha sido creada. Hola, me llamo Ana.
- ¿Qué hace este código?:
- Define la clase
Personacon un constructor__init__que tomanombreyedadcomo parámetros y los asigna a los atributos del objeto. - El constructor también imprime un mensaje cuando se crea una nueva persona.
- Se crea un objeto
persona1de la clasePersonay se llama al métodosaludar.
- Define la clase
Ejemplo con destructor del #
1class Persona: 2 def __init__(self, nombre, edad): 3 self.nombre = nombre 4 self.edad = edad 5 print(f"Persona {self.nombre}, de {self.edad} años ha sido creada.") 6 7 def __del__(self): 8 print(f"Persona {self.nombre}, de {self.edad} años ha sido destruida.") 9 10 def saludar(self): 11 print(f"Hola, me llamo {self.nombre}.") 12 13# Crear y destruir un objeto de la clase Persona 14persona2 = Persona("Carlos", 25) 15persona2.saludar() 16 17# El objeto se destruye automáticamente cuando el programa termina o cuando ya no se necesita 18del persona2 # Destruir explícitamente el objetoSalida de consola Persona Carlos, de 25 años ha sido creada. Hola, me llamo Carlos. Persona Carlos, de 25 años ha sido destruida.
- ¿Qué hace este código?:
- Define la clase
Personacon un constructor__init__y un destructor__del__. - El constructor inicializa los atributos y el destructor imprime un mensaje cuando el objeto se destruye.
- Se crea un objeto
persona2y se llama al métodosaludar. - El objeto se destruye explícitamente usando
del, lo que llama al destructor.
- Define la clase
4. Por qué usar constructores y destructores? #
- Constructores (
__init__): Son esenciales para asegurar que los objetos de una clase se inicialicen correctamente con los datos necesarios. Te permiten preparar al objeto para su uso inmediato. - Destructores (
__del__): Aunque no siempre son necesarios en Python (ya que el recolector de basura gestiona la memoria automáticamente), pueden ser útiles para liberar recursos externos como archivos o conexiones de red.
Resumen del tema
Conceptos clave #
- Inicializador
__init__: método dunder llamado tras la creación del objeto para asignar atributos iniciales al recibir parámetros. - Destructor
__del__: método invocado cuando el contador de referencias del objeto llega a cero y el recolector de basura (garbage collector) va a liberar su memoria. - Eliminación Explícita con
del: desvincula el identificador de la variable (del obj), reduciendo el conteo de referencias hacia el objeto en memoria. - Buenas Prácticas: preferir gestores de contexto (
with) frente a destructores__del__para asegurar liberación determinista de recursos del sistema (archivos, sockets, conexiones).
Qué debes recordar #
Usa __init__ para inicializar el estado del objeto al instanciarlo y __del__ o gestores de contexto with para liberar recursos al destruirlo.