class-scheduling / model /CourseClass.py
garizz's picture
Upload 31 files
8e7d8ae
class CourseClass:
# ID counter used to assign IDs automatically
_next_class_id = 0
# Initializes class object
def __init__(self, professor, course, requires_lab, duration, groups):
self.Id = CourseClass._next_class_id
CourseClass._next_class_id += 1
# Return pointer to professor who teaches
self.Professor = professor
# Return pointer to course to which class belongs
self.Course = course
# Returns number of seats (students) required in room
self.NumberOfSeats = 0
# Returns TRUE if class requires computers in room.
self.LabRequired = requires_lab
# Returns duration of class in hours
self.Duration = duration
# Returns reference to list of student groups who attend class
self.Groups = set(groups)
# bind professor to class
self.Professor.addCourseClass(self)
# bind student groups to class
for grp in self.Groups: # self.groups:
grp.addClass(self)
self.NumberOfSeats += grp.NumberOfStudents
# Returns TRUE if another class has one or overlapping student groups.
def groupsOverlap(self, c):
return len(self.Groups & c.Groups) > 0
# Returns TRUE if another class has same professor.
def professorOverlaps(self, c):
return self.Professor == c.Professor
def __hash__(self):
return hash(self.Id)
def __eq__(self, other):
if not isinstance(other, self.__class__):
return False
return hash(self) == hash(other)
def __ne__(self, other):
# Not strictly necessary, but to avoid having both x==y and x!=y
# True at the same time
return not (self == other)
# Restarts ID assigments
@staticmethod
def restartIDs() -> None:
CourseClass._next_class_id = 0