用python计算平均分,动态添加计算平均分的方法到学生类中← 打印出两个实例化对象属性值
时间: 2024-12-14 13:14:44 浏览: 3
在Python中,你可以创建一个名为`Student`的类,其中包含一个用于存储成绩的列表以及一个计算平均分的方法。然后,你可以为这个类添加动态方法(利用`__getattr__`魔术方法),使得在实例化对象时可以直接调用`average_score`方法。以下是具体的实现:
```python
class Student:
def __init__(self, name):
self.name = name
self.grades = []
def add_grade(self, grade):
self.grades.append(grade)
def _get_average_score(self):
if not self.grades:
return 0
else:
return sum(self.grades) / len(self.grades)
def __getattr__(self, attr_name):
if attr_name == 'average_score':
return self._get_average_score()
raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{attr_name}'")
# 创建学生实例
student1 = Student('Alice')
student2 = Student('Bob')
# 动态添加分数
student1.add_grade(85)
student1.add_grade(90)
student2.add_grade(78)
student2.add_grade(92)
# 打印两个学生的平均分
print(student1.average_score)
print(student2.average_score)
```
在这个例子中,当你尝试访问`average_score`属性时,如果没有直接定义在`Student`类里,`__getattr__`魔术方法就会被调用,返回计算后的平均分。
阅读全文