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

Sebastian Torres softmindfreak en gmail.com
Lun Mayo 6 10:57:57 ART 2013


Buena sugerencia esa, o quizá si no desea que sea privado con un simple
underscore alcanzaría, i.e, self._login.

Otra sugerencia Miguel, los nombres de clases siempre con mayúsculas ;) Te
dejo la guía de estilo de código escrita por el tío Guido, que te dice
básicamente qué es lindo y qué es feo en el código python :D

http://www.python.org/dev/peps/pep-0008/

Saludos!


El 6 de mayo de 2013 06:27, Pedro Jose Pezzarini <jose2190 en gmail.com>escribió:

> Quizás una pequeña sugerencia:
>
> Utilizá los nombres de propiedades en modo privado (casi) :
>
> self.__login = 0
> |
> |
> v
> def login(self, valor):
>     self.__login = valor
>
> ####
>
> O de ultima, y si estás con ganas de seguir avanzando con python, te
> sugiero leas un poco el método especial
> __getitem__
> Y
> __setitem__
>
>
> ######
>
> Con ese método podrías hacer algo como.
>
> a = Automotor()
>
> g = Combustibles.Nafta("Super")
>
> m = Motor(1.6, g)
>
> a["Motor"] = m
>
> a["Motor"] --> Retornaría el objeto m.
>
>
> Saludos!! y felicitaciones por elegir a python como tu lenguaje de juegos
> (todos comenzamos jugando muajajaja :P)
>
>
> El 5 de mayo de 2013 19:48, Sebastian Torres <softmindfreak en gmail.com>escribió:
>
> 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>*
>>
>>
>> _______________________________________________
>> 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/20130506/f8cacfb7/attachment.html>


More information about the pyar mailing list