定义一个名为 Student 的类。要求: (1)定义类屆性 students,为列表,用手保存全部实例。 (2)创建类实例时,依次完成实例属性 sid(学号)、name(姓名)、age<年龄)的赋值 (3)定义类方法 avs age, 计算全部学生的平均午龄
时间: 2024-01-21 19:16:08 浏览: 21
下面是代码实现:
```python
class Student:
students = []
def __init__(self, sid, name, age):
self.sid = sid
self.name = name
self.age = age
self.students.append(self)
@classmethod
def avg_age(cls):
total_age = 0
for student in cls.students:
total_age += student.age
return total_age / len(cls.students)
```
解释一下上述代码:
- 在类定义中,我们定义了一个类属性 `students`,它是一个列表,用于保存所有学生的实例。
- `__init__` 方法是类的构造方法,在创建实例时被调用。在这个方法中,我们为每个实例设置了三个属性:`sid`、`name` 和 `age`,并把实例添加到 `students` 列表中。
- `@classmethod` 是 Python 中的一个装饰器,用于声明一个类方法。在本例中,我们定义了一个类方法 `avg_age`,用于计算所有学生的平均年龄。这个方法使用了 `cls.students` 来访问类属性 `students`,然后遍历列表中的所有实例,累加它们的年龄。最后,将总年龄除以学生人数,即可得到平均年龄。
使用这个 `Student` 类,我们可以创建多个学生实例,并计算它们的平均年龄:
```python
# 创建几个学生实例
s1 = Student('001', '张三', 18)
s2 = Student('002', '李四', 19)
s3 = Student('003', '王五', 20)
# 计算平均年龄
avg_age = Student.avg_age()
print(avg_age) # 输出 19.0
```