Python - Código que no funciona

   
Vista:

Código que no funciona

Publicado por antonio.delgado8 (4 intervenciones) el 29/01/2014 00:16:12
Tengo el siguiente código en python que no me funciona

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class Usuario():
    # inicializamos campos  
    def __init__(self):
      self.conexion=''
      self.alias=''
      self.display=0
      self.ip=''
      self.servidor=''
      self.desconexion=''
      self.tiempo=0
...
...
    # Crea un usuario 
    def crea_usuario(self,conexion,alias,display,ip,servidor,desconexion):
      self.conexion=conexion
      self.alias=alias
      self.display=display
      self.ip=ip
      self.servidor=servidor
      self.desconexion=desconexion
 
      ts1 = time.mktime(time.strptime(self.conexion,'%Y/%m/%d %H:%M:%S'))
      ts2 = time.mktime(time.strptime(self.desconexion,'%Y/%m/%d %H:%M:%S'))
      ts = int(ts2 - ts1)
      self.tiempo=ts
 
    #Añade usuario a lista de usuarios
    def anade_usuario(self, lista):
      lista.append(self)
 
    #Lista la lista de usuarios
    def listado_completo(self, lista):
      for self in lista:
        self.mostrar_usuario()
 
...
...
#
# MAIN
#
 
#Lista de registros de conexiones
lista_usuarios = []
 
# instanciamos clase Usuario
usuario = Usuario()
 
usuario.listado_completo(lista_usuarios)

Cuando realiza el listado anterior de toda la lista siempre me aparece todos los elementos de la lista con el último elemento insertado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Código que no funciona

Publicado por xve (1229 intervenciones) el 29/01/2014 08:00:21
Hola Atonio, puede ser que falte código??

No vemos la función mostrar_usuario()

He intentado probar el código pero no hace nada, ya que la lista lista_usuarios esta vacía.

Si nos puedes mostrar todo el código o indicarnos el contenido de la lista...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Código que no funciona

Publicado por Antonio (4 intervenciones) el 29/01/2014 19:57:59
Perdona, mostré las partes relevantes. Paso a dar más información:

1
2
3
4
   # Mostramos usuario 
    def mostrar_usuario(self):
      print("Conexion:%-16s alias:%-8s display:%-3s ip:%-15s Servidor:%-4s Desconexion:%-16s Tiempo:%-6s"
            % (self.conexion,self.alias,self.display,self.ip,self.servidor,self.desconexion,self.tiempo))

El tema es que cuando llamo a crea usuario y le digo que me muestre el usuario creado
1
2
3
4
5
6
7
8
      #Creamos registro
      usuario.crea_usuario(conexion,alias,display,ip,servidor,desconexion)
 
      #Mostramos registro creado
      usuario.mostrar_usuario()
 
      #Añadimos registro a lista usuarios
     usuario.anade_usuario(lista_usuarios)

Veo que usuario lo crea bien:

1
2
3
4
5
6
7
8
9
Conexion:2013/11/14 10:45:20 alias:blasacda display:1   ip:10.25.165.4     Servidor:"pm1" Desconexion:2013/11/14 10:47:14 Tiempo:114
Conexion:2013/11/14 11:05:28 alias:bergarma display:1   ip:10.25.164.95    Servidor:"pm1" Desconexion:2013/11/14 11:07:07 Tiempo:99
Conexion:2013/11/14 11:42:18 alias:bergarma display:1   ip:10.25.164.95    Servidor:"pm1" Desconexion:2013/11/14 11:46:38 Tiempo:260
Conexion:2013/11/14 11:52:41 alias:bergarma display:1   ip:10.25.164.95    Servidor:"pm1" Desconexion:2013/11/14 11:55:50 Tiempo:189
Conexion:2013/11/14 12:02:22 alias:blasacda display:1   ip:10.25.165.4     Servidor:"pm1" Desconexion:2013/11/14 12:06:56 Tiempo:274
....
....
....
Conexion:2014/01/10 14:09:20 alias:tenbecpe display:6   ip:10.25.164.198   Servidor:"pm2" Desconexion:2014/01/10 14:13:45 Tiempo:265


Pero si posteriormente miro los registro de la lista obtengo lo siguiente

1
2
3
4
Conexion:2014/01/10 14:09:20 alias:tenbecpe display:6   ip:10.25.164.198   Servidor:"pm2" Desconexion:2014/01/10 14:13:45 Tiempo:265
Conexion:2014/01/10 14:09:20 alias:tenbecpe display:6   ip:10.25.164.198   Servidor:"pm2" Desconexion:2014/01/10 14:13:45 Tiempo:265
Conexion:2014/01/10 14:09:20 alias:tenbecpe display:6   ip:10.25.164.198   Servidor:"pm2" Desconexion:2014/01/10 14:13:45 Tiempo:265
Conexion:2014/01/10 14:09:20 alias:tenbecpe display:6   ip:10.25.164.198   Servidor:"pm2" Desconexion:2014/01/10 14:13:45 Tiempo:265

He comprobado que en la segunda llama a usuario.anade_usuario(lista_usuarios) va machacando el registro anterior. Posiblemente puede ser un error de concepto o de forma de trabajar de las listas

No sé si con ésta explicación es suficiente. Muchas gracias por el interés y la ayuda

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Código que no funciona

Publicado por antonio.delgado8 (4 intervenciones) el 06/02/2014 19:57:59
Por favor, puedes mirar el código que he añadido a ver si encuentras algo raro.

Le he dado muchas vueltas pero no lo encuentro....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Código que no funciona

Publicado por xve (1229 intervenciones) el 06/02/2014 21:56:55
Hola Antonio, me es muy difícil decirte que puede estar pasando, ya que no puedo ejecutar el código, y viendo lo que nos has mostrado, me da la sensación que esta todo bien, pero por algún lugar, hay el error, pero no lo se ver...

Seria posible que nos adjuntaras todo el código para poder probarlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Código que no funciona

Publicado por Antonio (4 intervenciones) el 07/02/2014 21:43:15
Te adjunto el script en python y el fichero que lee y procesa.

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Código que no funciona

Publicado por xve (1229 intervenciones) el 08/02/2014 11:51:21
Hola Antonio, muchas gracias por mostrarnos tu código...

Creo que el error lo tienes al guardar en el array self... la verdad es que nunca lo he utilizado de esta manera, pero entiendo que estas guardando un apuntados a el mismo, que cuando lo leas, siempre leerá los valores actuales, en ningún momento tendrá los valores antiguos

Yo te recomiendo que guardes una lista en la misma función crea_usuario() algo así:
1
lista.append([conexion,alias,display,ip,servidor,desconexion])

Espero que te sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar