[Python-POO]Necesito ayuda con un script

Iniciado por PabloPbl, 15 Noviembre 2015, 19:50 PM

0 Miembros y 1 Visitante están viendo este tema.

PabloPbl

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 (python) [Seleccionar]

import random

class Guerrero():
    nombre = "";
    guerreros = [0,0,0,0,0,0,0,0,0,0];

    def __init__(self, nombre):
        self.nombre = nombre;
        for numero in range(0, 10):
            numeroRandom = random.randint(1,1000);
            self.guerreros[numero] = numeroRandom;

    def imprimirNumeros(self):
        for i in self.guerreros:
            print(i);
        print("********************");

guerreroPlayer = Guerrero("Player");
guerreroPlayer.imprimirNumeros();

guerreroPc = Guerrero("PC");
guerreroPc.imprimirNumeros();

guerreroPlayer.imprimirNumeros();

Masita

Prueba sin declarar las variables fuera del __init__
Código (python) [Seleccionar]

import random

class Guerrero():

    def __init__(self, nombre):
        self.nombre = nombre
        self.guerreros = []
        for numero in range(0, 10):
            numeroRandom = random.randint(1,1000)
            self.guerreros.append(numeroRandom)

    def imprimirNumeros(self):
        for i in self.guerreros:
            print(i)
        print("********************")

guerreroPlayer = Guerrero("Player")
guerreroPlayer.imprimirNumeros()

guerreroPc = Guerrero("PC")
guerreroPc.imprimirNumeros()

guerreroPlayer.imprimirNumeros()

En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....


tincopasan

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)

PabloPbl

Exacto, vengo de Java.
Jeje si sabia que no se usaban, pero lo uso de costumbre, igual muchas gracias por tus consejos  ;D