Problemas con el __del__

Pablo Barrera González barrera en gsyc.escet.urjc.es
Lun Feb 9 19:32:55 CET 2004


Hola

Tengo un problema bastante raro que me ha hecho cuestionarme mi
conocimiento sobre las clases en Python. Tengo una clase para realizar
comunicaciones a través de un socket con un servidor. La clase es esta:

class MiClase:
    def __init__(self):
        soc = socket.socket()
        host = socket.gethostbyname("bla")
        port = 3001
        soc.connect((host, port))
        self.soc = soc
        print "Conectado con ", host

    def __del__(self):
        self.soc.send("1000\n")
        self.soc.close()
        print "Conexion cerrada como dios manda"

    def resto_de_metodos(self):
	pass

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

¿No debería ejecutarse el destructor al final del script al cerrarse el
interprete?

Gracias 

Pablo

PD: La ejecución es
objeto = MiClase()
if __name__ == "__main__":
	objeto.resto_de_metodos()

Uso python 2.3 en Debian GNU/Linux Sid.


   

-- 
Pablo Barrera González <barrera en gsyc.escet.urjc.es>
Grupo de Señales y Comunicaciones (URJC)




Más información sobre la lista de distribución Python-es