Problemas con el __del__
Hernan Foffani
hernan en orgmf.com.ar
Lun Feb 9 20:28:13 CET 2004
Pablo Barrera González escribio:
> Quiero que cuando se cierre el programa y un objeto de clase MiClase
> muera se cierre la conexión como dios manda. El problema es que nunca
> veo esa cadena de texto, ni aunque haga del miobjeto. La única forma
> es miobjeto.__del__().
Es algo mas complejo que eso.
El problema .__del__(self) se ejecuta cuando el reference count llega
a cero. del miobjeto lo que hace es descontar uno a la referencia y
quitar la asociacion entre el nombre 'miobjeto' y el objeto propiamente
dicho. pero lo segundo no implica directamente lo primero!
dependerá si miobjeto tiene referencias circulares y o referencias a
objetos de contexto etc.
Haz la prueba con una clase muy simple y verás que el llamado a
__del__ a veces queda "retrasado"
Hay mas detalles en la doc de __del__ y del modulo gc.
> ¿No debería ejecutarse el destructor al final del script al cerrarse
> el interprete?
¿Y si tienes distintos objetos (por ejemplo, conexiones y graficos) en
qué orden llamaría al __del__?
Ten en cuenta que python puede ser embebido y extendido.
saludos,
-H.
Más información sobre la lista de distribución Python-es