有一个学生
class Student:
def __init__(self, name, surname, gender):
self.name = name
self.surname = surname
self.gender = gender
self.finished_courses = []
self.courses_in_progress = []
self.grades = {}
def __str__(self):
average_grade = sum(elem for num in self.grades.values() for elem in num) / len(
[elem for num in self.grades.values() for elem in num])
return f'''Имя: {self.name}
Фамилия: {self.surname}
Средняя оценка за домашние задания: {average_grade}
Курсы в процессе изучения: {self.courses_in_progress}
Завершенные курсы: {self.finished_courses}'''
我需要它的 average_grade 变量来按平均成绩比较学生。但如果你把它放进去,它就会__init__开始发誓division by zero。有没有办法把它弄出来__str__?
您可以添加一个方法来计算平均分:
然后在需要的地方调用它。
或者制作一个计算字段 - 相同的方法,但使用 decorator
@property。将其视为普通字段:最好将表达式
elem for num in self.grades.values() for elem in num放入一个单独的变量中,计算一次,然后将其和除以它的长度:作为一个选项,初始化一个私有变量,该变量将被赋值并通过特殊方法返回
例子: