编写一个Person抽象类,要求含有姓名和年龄连个私有属性以及eat 和sleep抽象方法,并写出带参构造方法,创建student和worker两个类,继承Person类,学生类多出私有属性学号和学习方法(输出我爱学习),工人多出私有属性工号喝工作方式(输出我爱工作)在主函数中创建学生和工人类得实例对象,使得构造方法赋值,并输出所有属性和方法
时间: 2024-03-26 08:38:20 浏览: 136
好的,我来为您解答这个问题。
首先,根据您的要求,我们需要先创建一个抽象类 `Person`,并含有姓名和年龄两个私有属性以及 `eat` 和 `sleep` 两个抽象方法。具体实现如下:
```python
from abc import ABC, abstractmethod
class Person(ABC):
def __init__(self, name, age):
self._name = name
self._age = age
@abstractmethod
def eat(self):
pass
@abstractmethod
def sleep(self):
pass
```
接下来,我们需要创建 `Student` 和 `Worker` 两个类,分别继承自 `Person`。其中,学生类多出私有属性学号和学习方法,工人多出私有属性工号和工作方式。具体实现如下:
```python
class Student(Person):
def __init__(self, name, age, student_id):
super().__init__(name, age)
self._student_id = student_id
def eat(self):
print("我是学生,我要吃好的!")
def sleep(self):
print("我是学生,我要好好休息!")
def study(self):
print("我爱学习!")
class Worker(Person):
def __init__(self, name, age, worker_id):
super().__init__(name, age)
self._worker_id = worker_id
def eat(self):
print("我是工人,我要吃好的!")
def sleep(self):
print("我是工人,我要好好休息!")
def work(self):
print("我爱工作!")
```
最后,我们在主函数中创建学生和工人类的实例对象,并输出所有属性和方法。具体代码如下:
```python
if __name__ == '__main__':
student = Student("小明", 18, "20210001")
worker = Worker("张三", 30, "10001")
print("学生信息:")
print("姓名:", student._name)
print("年龄:", student._age)
print("学号:", student._student_id)
student.eat()
student.sleep()
student.study()
print("工人信息:")
print("姓名:", worker._name)
print("年龄:", worker._age)
print("工号:", worker._worker_id)
worker.eat()
worker.sleep()
worker.work()
```
运行结果如下:
```
学生信息:
姓名: 小明
年龄: 18
学号: 20210001
我是学生,我要吃好的!
我是学生,我要好好休息!
我爱学习!
工人信息:
姓名: 张三
年龄: 30
工号: 10001
我是工人,我要吃好的!
我是工人,我要好好休息!
我爱工作!
```
以上就是我对 if choice == "1":
student_id = input("请输入学号:")
name = input("请输入姓名:")
chinese_score = int(input("请输入语文成绩:"))
math_score = int(input("请输入数学成绩:"))
english_score = int(input("请输入英语成绩:"))
student = Student(student_id, name, chinese_score, math_score, english_score)
student_manager.add_student(student)
print("添加学生信息成功!")
elif choice == "2":
student_id = input("请输入学号:")
student_manager.remove_student(student_id)
print("删除学生信息成功!")
elif choice == "3":
student_id = input("请输入学号:")
name = input("请输入姓名(不修改请回车):")
chinese_score = input("请输入语文成绩(不修改请回车):")
math_score = input("请输入数学成绩(不修改请回车):")
english_score = input("请输入英语成绩(不修改请回车):")
student_manager.update_student(student_id, name, chinese_score, math_score, english_score)
print("修改学生信息成功!")
elif choice == "4":
student_manager.show_students()
elif choice == "5":
filename = input("请输入导出文件路径:")
student_manager.export_students(filename)
print("导出学生信息成功!")
elif choice == "6":
filename = input("请输入导入文件路径:")
student_manager.import_students(filename)
print("导入学生信息成功!")
elif choice == "0":
break
elif choice == "2":
while True:
student_score_menu()
choice = input("请选择菜单:")
if choice == "1":
highest_score = student_manager.get_highest_score("语文")
print(f"语文最高分为:{highest_score}")
elif choice == "2":
highest_score = student_manager.get_highest_score("数学")
print(f"数学最高分为:{highest_score}")
elif choice == "3":
highest_score = student_manager.get_highest_score("英语")
print(f"英语最高分为:{highest_score}")
elif choice == "4":
lowest_score = student_manager.get_lowest_score("语文")
print(f"语文最低分为:{lowest_score}")
elif choice == "5":
lowest_score = student_manager.get_lowest_score("数学")
print(f"数学最低分为:{lowest_score}")
elif choice == "6":
lowest_score = student_manager.get_lowest_score("英语")
print(f"英语最低分为:{lowest_score}")
elif choice == "7":
average_score = student_manager.get_average_score("语文")
print(f"语文平均分为:{average_score}")
elif choice == "8":
average_score = student_manager.get_average_score("数学")
print(f"数学平均分为:{average_score}")
elif choice == "9":
average于您提出的问题的解答,希望能够对您有所帮助。如果您还有其他问题,欢迎继续提问。
阅读全文