Ich habe Probleme, diesen Codecode auszuführen. Die Klasse ist Student, die einen IdCounter hat, und hier scheint das Problem zu liegen. (In Zeile 8)Zählervariable für Klasse
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)
Ich versuche, diese idCounter in meinem Student
Klasse zu haben, so kann ich es als Teil des Namens der Schüler (die wirklich eine ID # ist zum Beispiel Student 12345
. Aber ich habe Fehler wurde immer.
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
ich die idCounter + = 1 in vor, nach zu setzen versucht, alle Kombination, aber ich habe noch die referenced before assignment
Störung erhalte, können Sie mir erklären, was ich falsch mache?
Haben Sie die Zeile unmittelbar nach? –
Warum ich nicht darüber nachgedacht habe ... (Ursprünglich schrieb mein Code 'Student.idCounter = 0') – George
Abgesehen von dem speziellen Fehler, sind Inkremente in Python nicht atomar, so dass der naive Zähler Race-Bedingungen verursachen kann. Der bessere Weg wäre die Verwendung von 'itertools.count'. – bereal