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

Pedro Jose Pezzarini jose2190 en gmail.com
Lun Mayo 6 06:27:26 ART 2013


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
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130506/5e4a90de/attachment.html>


More information about the pyar mailing list