'''lecture_30_colbystudent.py
Design class ColbyStudent
Oliver W. Layton
CS 151: Computational Thinking: Visual Media
Spring 2021

TODO:
1. Add last day of class global variable (May 5)
    - Access with vs. without get method
    - Change date to Nov 24 and demonstrate change across all ColbyStudent objects
'''


class ColbyStudent:

    # class global variable
    lastDay = 'May 5'

    def __init__(self, name, year=2022):
        # Initialization data
        self.name = name
        self.year = year

        # Derived data
        self.grades = []
        self.gpa = 0.0

    def getName(self):
        return self.name

    def addGrade(self, newGrade):
        self.grades.append(newGrade)

    def getLastDayOfClass(self):
        return ColbyStudent.lastDay


'''
Update 1: class global variable
'''
mike = ColbyStudent('Mike', year=2022)
lilly = ColbyStudent('Lilly', year=2022)
print('Mike last day:', mike.getLastDayOfClass())
print('Lilly last day:', lilly.getLastDayOfClass())

# For class global variables, we do NOT need to actually create an object to get the value
# because it applies to the entire class, not just one object.
print("Class access last day:", ColbyStudent.lastDay)

ColbyStudent.lastDay = 'May 12'
print('Mike last day:', mike.getLastDayOfClass())
print('Lilly last day:', lilly.getLastDayOfClass())
