用Python编写出一个通用的人员类(Person),该类具有姓名(name)、年龄(age)、性别(sex)等域,并包含一个吃饭的方法(eat)该方法输出“民以食为天!”信息。然后对Person 类的继承得到一个学生类(Student),该类能够存放学生的5门课的成绩,并能求出平均成绩,同时对父类的eat方法进行覆盖,输出“学校有7个餐厅可供选择”信息。最后在测试函数中分别对Person类和Student类的功能进行验证。
时间: 2024-02-16 13:04:48 浏览: 82
Python编程中类与类的关系详解
好的,我来帮您解答这个问题。
首先,我们需要定义一个Person类,代码如下:
```python
class Person:
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def eat(self):
print("民以食为天!")
```
接下来,我们需要定义一个Student类,继承自Person类,并添加成绩相关的域和方法:
```python
class Student(Person):
def __init__(self, name, age, sex, scores):
super().__init__(name, age, sex)
self.scores = scores
def get_average_score(self):
return sum(self.scores) / len(self.scores)
def eat(self):
print("学校有7个餐厅可供选择")
```
在这个类中,我们重新定义了eat方法,覆盖了父类的eat方法。同时,我们添加了一个get_average_score方法,用于计算学生的平均成绩。
最后,我们可以编写一个测试函数,对Person类和Student类的功能进行验证:
```python
def test():
# 测试Person类
p = Person("张三", 20, "男")
print(p.name, p.age, p.sex)
p.eat()
# 测试Student类
s = Student("李四", 18, "女", [90, 80, 85, 92, 95])
print(s.name, s.age, s.sex, s.scores)
print("平均成绩:", s.get_average_score())
s.eat()
test()
```
运行上述代码,会输出如下结果:
```
张三 20 男
民以食为天!
李四 18 女 [90, 80, 85, 92, 95]
平均成绩: 88.4
学校有7个餐厅可供选择
```
可以看到,Person类和Student类的功能都正常运行。
阅读全文