Retornar valor desde un módulo
Jordi Ivars
ear en oronetes.net
Vie Feb 25 19:50:43 CET 2005
El vie, 25-02-2005 a las 15:21 -0300, Batista, Facundo escribió:
>Veamos. El siguiente código es similar al que pasaste, pero funcional:
>
>fbatista en pytonisa ~> cat pru.py
>
>class miclase:
>
> def __init__(self):
> print "tatata"
> self.autentificar(valor)
>
> def autentificar(self,valor):
> import mimodulo
> mimodulo.clasemodulo(valor)
> a = mimodulo.clasemodulo(valor)
> print a
>
>fbatista en pytonisa ~>
>fbatista en pytonisa ~>
>fbatista en pytonisa ~> cat mimodulo.py
>
>class clasemodulo:
>
> def __init__(self,valor):
> print "cosillas"
> self.valor_a_retornar(valor)
>
> def valor_a_retornar(self,valor):
> valor=valorantiguo+valornuevo
> return valor
>
>fbatista en pytonisa ~>
>
>
>De miclase, cuando haces mimodulo.clasemodulo(valor) estás instanciando la
>clase clasemodulo.
>
>En mimodulo, al instanciar la clase (ejecutar __init__), se imprime cosillas
>y luego se llama a una función, pasando el valor. En esta función se crea
>una variable *local a la función* que luego se devuelve. Volvemos entonces
>al __init__ donde volvimos con "valor" pero no lo guardamos en ningún lado
>(y el "valor" dentro de la función valor_a_retornar se perdió al terminar la
>función).
>
>Cuando el __init__ vuelve (no tienes un return explícito, pero no importa),
>se devuelve el objeto instanciado.
>
Si, así se entiende, pero no me vale. El return solo se ha de dar
mediante una señal, cuando se pulse un botón ok, y por tanto la
ejecución del __init__ ya ha finalizado cuando se da ese return. Voy a
poner el código mas o menos como lo tengo, es una aplicación en pygtk,
seria asi (el del modulo, el del programa principal creo que se ajusta
mucho al ejemplo):
class passwd:
def __init__(self,username):
(Por aqui hay otras historias...)
self.askpass(username)
def askpass(self,username)
#Dibujo la interfaz desde un .glade y conecto las señales
askpass_widgets = Widgets(glade_dir+'auth-dialog.glade')
connections = {
'okbutton1/clicked' : self.on_okbutton1_clicked,
'cancelbutton1/clicked' : self.on_cancelbutton1_clicked,
'entry1/changed' : self.on_entry1_changed,
}
#Asigno el valor self.password a la entrada de texto
def on_entry1_changed(self,widget,*args):
self.password=self.entry_passwd.get_text()
#Y al pulsar el boton ok me da el return del valor asignado antes (y me
cerraria la ventana, pero eso no está puesto aun).
def on_okbutton1_clicked(self,widget,*args):
return self.password
Y es asi como no me funciona. Me estoy temiendo que con return no voy a
poder recoger ese valor, no al menos de la manera como intento hacerlo.
¿Hay alguna otra manera de importar valores de un módulo ejecutado desde
la clase principal como si fueran valores propios de esta clase
principal?
Y nada, muchísimas gracias por vuestra ayuda:)
Saludos,
Jordi Ivars
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://mail.python.org/pipermail/python-es/attachments/20050225/4be7515b/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es