④ Student类定义类方法 show方法,显示学生所有信息。 ⑤ Student类定义类方法 average方法,求学生平均成绩。 ⑥ Student类定义类方法 averagei方法,求所有学生第i门课程的平均成绩。
时间: 2024-02-03 10:15:44 浏览: 20
下面是一个示例的Student类的定义,包括show、average和averagei方法:
```python
class Student:
# 类变量,用于记录所有学生的数量
count = 0
def __init__(self, name, grades):
self.name = name
self.grades = grades
Student.count += 1
# 类方法,显示学生所有信息
@classmethod
def show(cls, student):
print(f"Name: {student.name}")
for i, grade in enumerate(student.grades):
print(f"Grade {i+1}: {grade}")
# 类方法,求学生平均成绩
@classmethod
def average(cls, students):
total = 0
count = 0
for student in students:
total += sum(student.grades)
count += len(student.grades)
return total / count
# 类方法,求所有学生第i门课程的平均成绩
@classmethod
def averagei(cls, students, i):
total = 0
count = 0
for student in students:
if i < len(student.grades):
total += student.grades[i]
count += 1
return total / count if count > 0 else 0
```
在这个示例中,我们使用了classmethod装饰器来定义类方法。这些方法可以通过类名调用,而不需要实例化对象。例如,我们可以使用以下代码创建三个学生对象:
```python
s1 = Student("Alice", [80, 90, 85])
s2 = Student("Bob", [75, 85, 90])
s3 = Student("Charlie", [70, 80])
```
然后,我们可以使用show方法显示每个学生的信息:
```python
Student.show(s1)
Student.show(s2)
Student.show(s3)
```
我们也可以使用average方法来计算这三个学生的平均分数:
```python
students = [s1, s2, s3]
print(Student.average(students))
```
最后,我们可以使用averagei方法来计算所有学生的第二门课程的平均分数:
```python
print(Student.averagei(students, 1))
```