RE: [Python-es] Retornar valor desde un módulo

Batista, Facundo FBatista en uniFON.com.ar
Vie Feb 25 19:21:51 CET 2005


[Jordi Ivars]

#- Y ese return es el que quiero recoger en el programa principal, cuando
#- hago el a=mimodulo.clasemodulo(valor) ... pero no me retorna. Y eso es,
#- mas o menos, como tengo el codigo, pero simplificado:)

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.


.    Facundo

Bitácora De Vuelo: http://www.taniquetil.com.ar/plog
PyAr - Python Argentina: http://pyar.decode.com.ar/


  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
ADVERTENCIA.

La información contenida en este mensaje y cualquier archivo anexo al mismo,
son para uso exclusivo del destinatario y pueden contener información
confidencial o propietaria, cuya divulgación es sancionada por la ley.
Si Ud. No es uno de los destinatarios consignados o la persona responsable
de hacer llegar este mensaje a los destinatarios consignados, no está
autorizado a divulgar, copiar, distribuir o retener información (o parte de
ella) contenida en este mensaje. Por favor notifíquenos respondiendo al
remitente, borre el mensaje original y borre las copias (impresas o grabadas
en cualquier medio magnético) que pueda haber realizado del mismo.
Todas las opiniones contenidas en este mail son propias del autor del
mensaje y no necesariamente coinciden con las de Telefónica Comunicaciones
Personales S.A. o alguna empresa asociada.
Los mensajes electrónicos pueden ser alterados, motivo por el cual
Telefónica Comunicaciones Personales S.A. no aceptará ninguna obligación
cualquiera sea el resultante de este mensaje.
Muchas Gracias.




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