Python - Ayuda con POO

   
Vista:

Ayuda con POO

Publicado por Jonathan (3 intervenciones) el 24/07/2017 21:45:29
Tengo dos archivos uno que es el ejecutable y otro donde estara la clase que hara las operaciones el problema es que creo un objeto de clase estudiante donde guardar los datos de nombre y nota, luego creo un segundo objeto para que igual guarde, pero en vez de guardar no se porque reemplaza los valores del primer objeto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Estudiante:
    nombre = ""
    promedio_final = 0.0
 
    def agregar_nombre(n):
        Estudiante.nombre = n
 
    def obtener_nombre():
        return Estudiante.nombre
 
    def agregar_promedio(n):
        Estudiante.promedio_final = n
 
    def obtener_promedio():
        return Estudiante.promedio_final
Ese es el codigo de la clase Estudiante y el siguiente es el archivo principal que imprimira la respuesta y llamara a la clase estudiante
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
from Estudiante import Estudiante
 
suma  = 0
promedio = 0
lista = []
e = Estudiante
est = Estudiante
 
e.agregar_nombre("Rene")
e.agregar_promedio(10)
 
 
 
e2.agregar_nombre("Luis")
e2.agregar_promedio(4)
 
lista.append(e)
lista.append(e2)
 
for i in range (len(lista)):
    suma = suma + lista[i].obtener_promedio()
 
promedio = suma / 2
 
print(promedio)
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 [abZeroX]

Ayuda con POO

Publicado por [abZeroX] (56 intervenciones) el 25/07/2017 05:12:46
Hola Jonathan, el problema es que las propiedades pertenecen directamente a la clase es decir, las propiedades son compartidas por todos los objetos por ende al asignar un nuevo valor se remplaza el anterior. Una solución a esto es que los valores de las propiedades sean asignados al crear una instancia del objeto.
Modifique tu código un poco espero te sirva.

Clase Estudiante
1
2
3
4
5
6
7
8
class Estudiante:
    aux = ""
    def __init__(self, nombre, promedio):
        self.nombre = nombre
        self.promedio_final = promedio
 
    def obtener_promedio(self):
        return self.promedio_final

1
2
3
4
5
6
7
8
9
10
11
12
13
from Estudiante import Estudiante
 
suma  = 0
lista = []
e = Estudiante("Rene", 10)
e2 = Estudiante("Luis", 4)
 
lista.append(e)
lista.append(e2)
 
for i in range(len(lista)):
    suma += lista[i].obtener_promedio()
print("Promedio: %.2f " %(suma / len(lista)))

Salida
1
Promedio: 7.00

Nos comentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda con POO

Publicado por Jonathan (3 intervenciones) el 25/07/2017 05:46:45
Gracias mil gracias me sirvio full ahora puedo terminar el resto de mis trabajos
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
Revisar política de publicidad