Bu kod parçasının çalıştırılması konusunda sorun yaşıyorum. Sınıf bir IdCounter'a sahip olan öğrencidir ve problemin olduğu yer burasıdır. (Hat 8'de)Sınıf için sayaç değişkeni
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)
benim Student
sınıf içinde bu idCounter sahip çalışıyorum, bu yüzden Student 12345
örneğin, gerçekten bir kimlik # olan öğrencinin adı (bir parçası olarak sahip olabilir. Ama var elde edilmiştir hatası.
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
Ben idCounter koymak için çalıştı + = 1 önce, sonra, bütün kombinasyon, ama yine de referenced before assignment
hatası alıyorum, sen yanlış yapıyorum bana açıklayabilir misin?
Hemen izleyen çizgiye baktınız mı? –
Neden böyle bir şey hakkında düşünmedim ... (Orjinal olarak benim kodum yazdı "Student.idCounter = 0') – George
Belirli hatadan başka, artışlar Python'da atomik değildir, bu yüzden saf sayıcı yarış koşullarına neden olabilir. "Itertools.count" kullanmak daha iyi bir yol olurdu. – bereal