将avg方法更改为:@property
def avg(self):
return sum(self.grades) / float(len(self.grades))
@property是一个装饰器和一个语法糖,使这个方法成为一个“getter”。或者,如果你愿意,它也可以被认为是一个“计算属性”。它对于解决你的问题并不重要,但它是一种构建类的好方法。在
您不需要top作为类方法。因为您要将所有对象(包括“本身”)传递给它,所以您可以使此方法成为一个主函数。或者,您也可以创建另一个名为Classroom的类,它有一个属性students,它将是所有的Student对象。然后您还可以在那里有一个名为top_student的类方法。但目前,以下功能也可能是主要功能:
^{pr2}$
将其插入代码:class Student:
def __init__(self, n, g):
self.name = n
self.gender = g
self.grades = []
def add(self,grade):
#do something.
self.grades.append(grade)
@property
def avg(self):
return 0 if len(self.grades) == 0 else sum(self.grades) / float(len(self.grades))
def fcount(self):
#do something.
#return fail_count
return 0