[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