Tengo problemas para ejecutar este código. La clase es Estudiante que tiene un IdCounter, y es donde parece que está el problema. (En la línea 8)Variable de contador para la clase
class Student:
idCounter = 0
def __init__(self):
self.gpa = 0
self.record = {}
# Each time I create a new student, the idCounter increment
idCounter += 1
self.name = 'Student {0}'.format(Student.idCounter)
classRoster = [] # List of students
for number in range(25):
newStudent = Student()
classRoster.append(newStudent)
print(newStudent.name)
Estoy tratando de tener esta idCounter dentro de mi clase Student
, lo que puede tener como parte del nombre del estudiante (que en realidad es un número de identificación, por ejemplo Student 12345
. Pero tengo estado recibiendo error.
Traceback (most recent call last):
File "/Users/yanwchan/Documents/test.py", line 13, in <module>
newStudent = Student()
File "/Users/yanwchan/Documents/test.py", line 8, in __init__
idCounter += 1
UnboundLocalError: local variable 'idCounter' referenced before assignment
traté de poner el idCounter + = 1 en antes, después, todas las combinaciones, pero todavía estoy consiguiendo el error referenced before assignment
, se puede explicar a mí lo que estoy haciendo mal?
¿Ha mirado la línea que sigue inmediatamente? –
Por qué no he pensado en eso ... (Originalmente mi código escribió 'Student.idCounter = 0') – George
Aparte del error en particular, los incrementos no son atómicos en Python por lo que el contador ingenuo puede causar condiciones de carrera. La mejor forma sería usar 'itertools.count'. – bereal