У меня возникла проблема с запуском этой части кода. Класс - это Student, у которого есть IdCounter, и именно там проблема кажется. (В строке 8)Счетчик переменной для класса
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)
Я пытаюсь, чтобы это idCounter внутри моего Student
класса, так что я могу иметь его как часть имени студента (который действительно ID #, например Student 12345
. Но у меня есть получаю ошибки.
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
Я пытался поставить idCounter + = 1 в до, после, все комбинации, но я все еще получаю ошибку referenced before assignment
, вы можете объяснить мне, что я делаю неправильно?
Вы посмотрели на линию сразу после? –
Почему я об этом не думал ... (Orginally мой код написал 'Student.idCounter = 0') – George
Помимо конкретной ошибки, приращения не являются атомарными в Python, поэтому наивный счетчик может вызвать условия гонки. Лучшим способом было бы использовать 'itertools.count'. – bereal