[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