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

Miguel Barraza correo en miguelbarraza.com.ar
Vie Mayo 10 11:17:57 ART 2013


Gracias por la ayuda, si, es interesante que me vayan sugiriendo cosas para leer así voy avanzando. es tanto el mar para aprender en python que aveces me pierdo, y jugando se aprende dicen, por eso decidí meterme en un jueguito haber que tal surje y que tanto aprendo.

gracias por las ayudas!, me pondre a practicar.

atte, Miguel

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


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


More information about the pyar mailing list