Dada una clase python class Student():
y una lista names = []
; entonces yo quiero crear varias instancias de Student()
y añadirlos a la lista names
,lista de Python para almacenar la instancia de clase?
names = [] # For storing the student instances
class Student():
def __init__(self, score, gender):
self.score = score
self.gender = gender
Y ahora quiero ver los resultados de todos los estudiantes de sexo masculino, puedo hacerlo de esta manera?
scores = []
for i in names:
if i.gender == "Male":
scores.append(i.score)
Mi pregunta es: ¿Cómo crear una lista que puede (si se podía hacer por cualquier declaración) almacenar la instancia de Student
? O más bien, cuando escribo names = []
, ¿cómo podría indicar cada elemento en names
es una instancia de Student
para que pueda usar las atribuciones de este elemento a pesar de que python es de tipo débil? Espero sido claro;)
Puedo escribir como:
for i in range(len(names)):
student = Student()
student = names[i]
if student.gender == "Male":
# Whatever
supongo que no ...
respuesta a tu edición: No, no se puede escribir que, debido a que está llamando 'Student()' sin argumentos aunque toma 2. Si elimina esa línea, funcionará. – sepp2k
@ sepp2k, sí, los argumentos no coinciden en el alumno Construtor, por lo que esto ahorrará errores. bueno, creo que debería pensar sobre mi problema porque ahora tengo dificultades para expresar mi problema, lo que publiqué no era mi punto – ladyfafa
si piensas en tu código un poco más puedes entender dónde está fallando. La línea 'student = Student()' intenta crear una nueva instancia 'Student' y almacenarla en la variable' student'. Esto fallará, porque al constructor le faltan algunos argumentos requeridos. Creo que estás tratando de declarar el tipo de 'estudiante' No tienes que hacer eso en Python. Lo resolverá en tiempo de ejecución. Observe también que puede iterar directamente sobre los elementos de 'names' con' for student in names: ... '. – katrielalex