Para una gestión de recursos de verdad profesional, lo que se usa es el protocolo de gestión de contexto con los métodos _enter_() y _exit_(). Esto es lo que te permite usar la sentencia with. El método __enter__ prepara el recurso al entrar en el bloque, y _exit_ se asegura de limpiarlo todo al salir. La gran ventaja del with es que el método _exit_ se ejecuta sí o sí. Da igual si el código termina bien, si hay un return inesperado o si salta una excepción catastrófica; Python garantiza que la limpieza se haga. Para una base de datos, esto es la diferencia entre dejar una conexión colgada o cerrarla correctamente. Imagina una clase ConexionBD. En el _init_ podrías guardar las credenciales, pero lo ideal es que el _enter_ abra la conexión y el _exit_ haga el commit de las transacciones y cierre la sesión. Así evitas las famosas fugas de conexiones que acaban tumbando servidores. Además, los constructores permiten virguerías como la carga diferida (o lazy loading). En lugar de cargar megabytes de datos en el _init_, simplemente preparas el terreno y solo traes la información cuando el código realmente la pide por primera vez. Esto hace que tu aplicación arranque mucho más rápido y no gaste recursos innecesarios.
El método _init_() es el constructor. Se ejecuta en cuanto creas la instancia y su trabajo es dejar al objeto listo y en un estado válido. Aquí es donde validas los parámetros y, si algo no cuadra, lanzas una excepción para evitar que el objeto nazca "defectuoso". Por ejemplo, si una clase necesita un archivo para funcionar, el _init_() debería comprobar que el archivo existe. Por otro lado, está el método _del_(), que hace de destructor. En teoría, se llama justo antes de que el recolector de basura de Python elimine el objeto. Es el sitio para cerrar conexiones o liberar memoria manual. El problema es que en Python no puedes fiarte al 100% de _del_(), no hay garantías de cuándo se va a ejecutar
5100_UD02_3.4
CESUR
Created on February 2, 2026
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Puzzle Diagram
View
Gear Diagram
View
Square Timeline Diagram
View
Timeline Diagram
View
Timeline Diagram 3
View
Timeline Diagram 4
View
Timeline Diagram 2
Explore all templates
Transcript
Cualidades negativas
Cualidades positivas
Cualidades positivas
Gestión de recursos
Constructores
Haz clic para ampliar información
Para una gestión de recursos de verdad profesional, lo que se usa es el protocolo de gestión de contexto con los métodos _enter_() y _exit_(). Esto es lo que te permite usar la sentencia with. El método __enter__ prepara el recurso al entrar en el bloque, y _exit_ se asegura de limpiarlo todo al salir. La gran ventaja del with es que el método _exit_ se ejecuta sí o sí. Da igual si el código termina bien, si hay un return inesperado o si salta una excepción catastrófica; Python garantiza que la limpieza se haga. Para una base de datos, esto es la diferencia entre dejar una conexión colgada o cerrarla correctamente. Imagina una clase ConexionBD. En el _init_ podrías guardar las credenciales, pero lo ideal es que el _enter_ abra la conexión y el _exit_ haga el commit de las transacciones y cierre la sesión. Así evitas las famosas fugas de conexiones que acaban tumbando servidores. Además, los constructores permiten virguerías como la carga diferida (o lazy loading). En lugar de cargar megabytes de datos en el _init_, simplemente preparas el terreno y solo traes la información cuando el código realmente la pide por primera vez. Esto hace que tu aplicación arranque mucho más rápido y no gaste recursos innecesarios.
El método _init_() es el constructor. Se ejecuta en cuanto creas la instancia y su trabajo es dejar al objeto listo y en un estado válido. Aquí es donde validas los parámetros y, si algo no cuadra, lanzas una excepción para evitar que el objeto nazca "defectuoso". Por ejemplo, si una clase necesita un archivo para funcionar, el _init_() debería comprobar que el archivo existe. Por otro lado, está el método _del_(), que hace de destructor. En teoría, se llama justo antes de que el recolector de basura de Python elimine el objeto. Es el sitio para cerrar conexiones o liberar memoria manual. El problema es que en Python no puedes fiarte al 100% de _del_(), no hay garantías de cuándo se va a ejecutar