Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: PabloPbl en 15 Noviembre 2015, 19:50 pm



Título: [Python-POO]Necesito ayuda con un script
Publicado por: PabloPbl en 15 Noviembre 2015, 19:50 pm
Instancio 2 objetos de la clase Guerrero, uno para la PC y otro para el jugador, ambos objetos son de la misma clase.

En el constructor de esta clase, hace que la lista "guerreros" tome un valor aleatorio por cada indice.

Primero creo un objeto llamado guerreroPlayer y luego imprimo su lista con los números aleatorios que me genero. Luego lo mismo hago pero con el objeto guerreroPC, hasta ahí todo bien, cada lista con valores diferentes.

Pero el error esta en cuando vuelvo a imprimir los valores de la lista del objeto guerreroPlayer. Me muestra los mismos valores que tiene el objeto guerreroPC  :-\ y no los mismos de antes.

Alguien sabe por que sucede esto? gracias de antemano

Código
  1. import random
  2.  
  3. class Guerrero():
  4.    nombre = "";
  5.    guerreros = [0,0,0,0,0,0,0,0,0,0];
  6.  
  7.    def __init__(self, nombre):
  8.        self.nombre = nombre;
  9.        for numero in range(0, 10):
  10.            numeroRandom = random.randint(1,1000);
  11.            self.guerreros[numero] = numeroRandom;
  12.  
  13.    def imprimirNumeros(self):
  14.        for i in self.guerreros:
  15.            print(i);
  16.        print("********************");
  17.  
  18. guerreroPlayer = Guerrero("Player");
  19. guerreroPlayer.imprimirNumeros();
  20.  
  21. guerreroPc = Guerrero("PC");
  22. guerreroPc.imprimirNumeros();
  23.  
  24. guerreroPlayer.imprimirNumeros();
  25.  


Título: Re: [Python-POO]Necesito ayuda con un script
Publicado por: Masita en 16 Noviembre 2015, 02:07 am
Prueba sin declarar las variables fuera del __init__
Código
  1. import random
  2.  
  3. class Guerrero():
  4.  
  5.    def __init__(self, nombre):
  6.        self.nombre = nombre
  7.        self.guerreros = []
  8.        for numero in range(0, 10):
  9.            numeroRandom = random.randint(1,1000)
  10.            self.guerreros.append(numeroRandom)
  11.  
  12.    def imprimirNumeros(self):
  13.        for i in self.guerreros:
  14.            print(i)
  15.        print("********************")
  16.  
  17. guerreroPlayer = Guerrero("Player")
  18. guerreroPlayer.imprimirNumeros()
  19.  
  20. guerreroPc = Guerrero("PC")
  21. guerreroPc.imprimirNumeros()
  22.  
  23. guerreroPlayer.imprimirNumeros()
  24.  
  25.  


Título: Re: [Python-POO]Necesito ayuda con un script
Publicado por: PabloPbl en 16 Noviembre 2015, 02:43 am
Gracias era eso  ;-) ;-) ;-)


Título: Re: [Python-POO]Necesito ayuda con un script
Publicado por: tincopasan en 16 Noviembre 2015, 02:58 am
ya te solucionaron el problema! 2 cosas más:
1) seguro venís de otro lenguaje de programación, por el ";" al final de línea(no se usa en python
2) esto("***********") es mejor ("*"*20)


Título: Re: [Python-POO]Necesito ayuda con un script
Publicado por: PabloPbl en 16 Noviembre 2015, 03:29 am
Exacto, vengo de Java.
Jeje si sabia que no se usaban, pero lo uso de costumbre, igual muchas gracias por tus consejos  ;D