class Student: def __init__(self, name, year): self.name = name self.year = year self.grades =  def add_grade(self, grade): if type(grade) == Grade: self.grades.append(grade.score) def get_average(self): self.average = 0 if len(self.grades) > 0: for i in self.grades: self.average += i self.average = self.average / len(self.grades) print(self.average) #<------ This prints the expected average value roger = Student("Roger van der Weyden", 10) class Grade: def __init__(self, score): self.score = score grade1 = Grade(100) grade2 = Grade(35) grade3 = Grade(73) pieter.add_grade(grade1) pieter.add_grade(grade2) pieter.add_grade(grade3) print(pieter.get_average()) #<------ This prints None
Why does the print line in the get_average method print the proper average value, but calling the method in it’s own print line at the bottom returns ‘None’?
Edit: Nvm, adding a
line at the bottom of the .get_average method definition did the trick. I just don’t understand why. All other method definitions didn’t require a return line to work as expected, why did this one need it?