[pyar] error de novato (problemas con variables supongo)

Sebastian Torres softmindfreak en gmail.com
Dom Mayo 5 19:48:03 ART 2013


Es por eso. Cuando en el __init__ vos asignas un valor entero al atributo
login (self.login = 0) python asume que cuando hagas nuevamente self.login
estas invocando al atributo, la explicación técnica te la pueden brindar
los mas expertos en la lista, debe tener que ver con el espacio de nombres
de la clase (si no es que le estoy pifiando feo). Si tenés un método dentro
de la clase con el mismo nombre y lo llamás con self.login(), python acude
al valor en el atributo self.login, o sea un entero y no un objeto de tipo
función (o instancemethod) y es por eso que no la ejecuta.

Acá va un ejemplo:

*In [1]: class Motor:*
*   ...:     def __init__(self):*
*   ...:         self.login = 0*
*   ...:     def login(self):*
*   ...:         print "Lalala"*
*   ...: *
*
*
*In [2]: motor = Motor()*
*
*
*In [3]: motor.login*
*Out[3]: 0*
*
*
*Intento llamar al método*
*In [4]: motor.login()*
*---------------------------------------------------------------------------
*
*TypeError                                 Traceback (most recent call last)
*
*<ipython-input-4-3a78faf83efc> in <module>()*
*----> 1 motor.login()*
*
*
*TypeError: 'int' object is not callable*
*
*
*In [5]: type(motor.login)*
*Out[5]: int*

Espero haber ayudado aunque sea un poco.

Saludos,
Sebas.


El 5 de mayo de 2013 19:04, Miguel Barraza
<correo en miguelbarraza.com.ar>escribió:

> **
> respondiendo a mi mail , creo que dando vuelta encontré un posible problema
> *.*
> puede ser que las variables deben ser de diferente nombre que la función a
> utilizar?.
>
> porque cambié de nombre la variable y ahora si me funciona:
>
> #-*encoding utf 8-*
> class motor:
>
>     def __init__(self):
>         self.lg=0
>
>         self.etapa=1
>         print "ingrese su usuario: "
>         self.data=""
>         while self.data != "exit":
>             self.data = raw_input("?")
>             self.cmd()
>
>     def cmd(self):
>         if self.lg == 0:
>
>             # procesamos login al server
>             self.login()
>         else:
>             print "mundo."
>
>     # creamos la función de login:
>     def login(self):
>         if self.etapa == 0:
>             # guardamos la info del user y pedimos pass:
>             self.user=self.data
>
>             # lo hacemos pasar a la etapa 1, pedir password:
>             self.etapa=1
>             print self.user+", escriba su password"
>         elif self.etapa == 1:
>             # validamos el password:
>             if self.data == "1234":
>                 print "bienvenido al mundo!!"
>                 print "cargando personaje..."
>                 self.lg=1
>
>                 self.etapa=0
>             else:
>                 # datos incorrectos, vuelve a empezar:
>                 print "los datos ingresados no son correctos, vuelva a
> intentar."
>                 self.lg=0
>
>                 self.etapa=0
>                 print "ingrese su nombre de usuario:"
>         else:
>             print "error de motor."
>
>
> motor()
>
>
> voy a seguir trabajando un poco mas en él.
>
> atte, Miguel
>
>
>
> *Subject:* [pyar] error de novato (problemas con variables supongo)
>
>
> buenas, hace mucho que no toco python y quiero volver a retomarlo así
> intento aprender un poco mas.
> estoy intentando hacer un jueguito básico para ver si me sale, y hice una
> parte simple de login:
> 1. pones un usuario cualquiera
> 2. pones la contraseña: 1234, y ya estarias jugando.
> pero en la parte de login me tira errores y no se en que estoy fallando.
> este es el error:
> 'int' object is not callable
>
> alguien me podría decir porque es ese error?.
> utilizo python 2.7 en windows 7.
>
> el código de lo que voy haciendo es este:
>
>
> #-*encoding utf 8-*
> class motor:
>
>     def __init__(self):
>         self.login=0
>         self.etapa=1
>         print "ingrese su usuario: "
>         self.data=""
>         while self.data != "exit":
>             self.data = raw_input("?")
>             self.cmd()
>
>     def cmd(self):
>         if self.login == 0:
>             # procesamos login al server
>             self.login()
>         else:
>             print "mundo."
>
>     # creamos la función de login:
>     def login(self):
>         if self.etapa == 0:
>             # guardamos la info del user y pedimos pass:
>             self.user=self.msg
>             # lo hacemos pasar a la etapa 1, pedir password:
>             self.etapa=1
>             print self.user+", escriba su password"
>         elif self.etapa == 1:
>             # validamos el password:
>             if self.data == "1234":
>                 print "bienvenido al mundo!!"
>                 print "cargando personaje..."
>                 self.login=1
>                 self.etapa=0
>             else:
>                 # datos incorrectos, vuelve a empezar:
>                 print "los datos ingresados no son correctos, vuelva a
> intentar."
>                 self.login=0
>                 self.etapa=0
>                 print "ingrese su nombre de usuario:"
>         else:
>             print "error de motor."
>
>
> motor()
>
>
> gracias por la ayudita.
>
> atte, Miguel
>
> ------------------------------
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 

*''A pessimist sees the difficulty in every opportunity;
an optimist sees the opportunity in every difficulty''
                                                                    Winston
Churchill

*

*"Common sense is the most evenly distributed quantity in the world.*

*Everyone thinks he has enough."*

*                                                            Descartes, 1637

 There's too much blood in my caffeine system.

 <Marticus>*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130505/a5daf6ac/attachment.html>


More information about the pyar mailing list