前一段时间,我找到了这个答案,帮助我找到了需要什么来整理类与实例变量及其作用域。
所以,一个扩展,做同样的事情,只使用一个生成器。生成器像idCounter一样为学生分配一个唯一的数字——只使用这些值。生成器类上没有prev方法,我知道这一点。idGenerator和idCounter都没有被记住,所以如果你想将列表外部化然后回来添加一个或多个学生,你就必须相应地更新范围(start,,),或者迭代每个值而不分配它,直到你按顺序得到唯一的值为止,idCounter的路径稍微短一些,您可以简单地用一个虚拟实例构造来设置它。class Student:
""" Implement a shared generator among all sub-classes
in addition to idCounter. """
# A student ID counter
idCounter = 0
# A student ID from generator
idGenerator = (x for x in range(0xAAAAAA, 0xEEEEEE, 0xBA))
def __init__(self):
self.gpa = 0
self.record = {}
# Each time I create a new student, the idCounter increment
Student.idCounter += 1
self.id = Student.idGenerator.__next__()
self.name = f"{self.id} Student {Student.idCounter}"
classRoster = [] # List of students
for number in range(25):
newStudent = Student()
classRoster.append(newStudent)
print(newStudent.name)