Переменная счетчика для класса

У меня возникла проблема с запуском этой части кода. Класс - это 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, можете ли вы объяснить мне, что я делаю неправильно?

Ответ 1

class Student:
    # A student ID counter
    idCounter = 0
    def __init__(self):
        self.gpa = 0
        self.record = {}
        # Each time I create a new student, the idCounter increment
        Student.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)

Благодаря указанию Игнасио, Васкес-Абрамса, понял это...