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

问题描述 投票:-1回答:1
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())
python-3.x
1个回答
0
投票
for i in self.students :
    value += student.get_grade() # this part had the error

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

如果您改用value += i.get_grade(),您会更成功,尽管我可能也会选择一个更好的变量名。

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

value = sum([item.get_grade() for item in self.students])
© www.soinside.com 2019 - 2024. All rights reserved.