Tôi gặp sự cố khi nhận đoạn mã này để chạy. Lớp học là Sinh viên có một IdCounter, và nó là nơi mà vấn đề có vẻ là. (Tại dòng 8)Biến số lượt truy cập cho lớp
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)
Tôi cố gắng để có idCounter này bên trong lớp Student
tôi, vì vậy tôi có thể có nó như là một phần của tên của học sinh (mà thực sự là một ID #, ví dụ Student 12345
. Nhưng tôi có được nhận được lỗi.
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
tôi cố gắng để đưa các idCounter + = 1 vào trước, sau đó, tất cả kết hợp, nhưng tôi vẫn nhận được lỗi referenced before assignment
, có thể giúp bạn giải thích cho tôi những gì tôi đang làm sai?
Bạn đã xem dòng ngay sau? –
Tại sao tôi không nghĩ về điều đó ... (Orginally mã của tôi đã viết 'Student.idCounter = 0') – George
Ngoài lỗi cụ thể, gia số không phải là nguyên tử trong Python nên bộ đếm ngây thơ có thể gây ra điều kiện chủng tộc. Cách tốt hơn là sử dụng 'itertools.count'. – bereal