怎么了为什么不应该显示类型错误?

时间:2020-04-30 13:13:42

标签: python-3.x

class student :
    def __init__(self,name,age,grade):
        self.name = name
        self.age = age
        self.grade = grade   # 0 - 100

    def get_grade(self):
        return self.grade

class Course :
    def __init__(self, name, max_students):
        self.name = name
        self.max_students = max_students
        self.students = []

    def add_student(self, student):
        if len(self.students) < self.max_students :
            self.students.append(student)
            return True
        return False
    def get_average_grade(self):
        value = 0
        for i in self.students :
            value += student.get_grade() # this part had the error

        return value / len(self.students)

s1 = student('Bob', 12, 50)
s2 = student('Joe', 12, 60)
s3 = student('Sadie', 12, 100)

Course1 = Course('Chemistry', 5)
Course1.add_student(s1)
Course1.add_student(s2)
Course1.add_student(s3)
print(Course1.students[0].name)
print(Course1.get_average_grade())

1 个答案:

答案 0 :(得分:0)

for i in self.students :
    value += student.get_grade() # this part had the error

出现错误是因为您使用的是类名student而不是循环主题i

虽然我可能会选择一个更好的变量名称,但是如果您改用value += i.get_grade(),则会更成功。

或者您可以将get_average_grade()的整个主体替换为更多Python语言:

return sum([item.get_grade() for item in self.students]) / len(self.students)

顺便说一句,您也许还想考虑当列表中没有 个学生时会发生什么。

相关问题