编写一个Person抽象类,要求含有姓名(name)年龄(age)两个私有属性以及吃饭(eat) 和睡觉(sleep)两个抽象方法,并写出带参构造方法,创建学生(student)和工人(worker) 两个类,继承Person类,学生类多出了私有属性学号和学习方法(输出我爱学习),工人类多出了私有属性工号和工作方法(输出我爱工作),在主函数中创建学生和工人类的实例对象,使用构造方法赋值,并输出所有属性和方法。
时间: 2024-01-05 07:04:27 浏览: 109
好的,以下是您所需的代码:
```python
# 定义Person类
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# 定义抽象方法
def eat(self):
pass
def sleep(self):
pass
# 定义Student类,继承Person类
class Student(Person):
def __init__(self, name, age, student_id):
super().__init__(name, age)
self.student_id = student_id
# 实现抽象方法
def eat(self):
print("学生{}喜欢吃学生餐".format(self.name))
def sleep(self):
print("学生{}喜欢在宿舍里睡觉".format(self.name))
def study(self):
print("我爱学习")
# 定义Worker类,继承Person类
class Worker(Person):
def __init__(self, name, age, worker_id):
super().__init__(name, age)
self.worker_id = worker_id
# 实现抽象方法
def eat(self):
print("工人{}喜欢吃快餐".format(self.name))
def sleep(self):
print("工人{}喜欢在工地上睡觉".format(self.name))
def work(self):
print("我爱工作")
# 创建Student和Worker类的实例对象,并输出所有属性和方法
if __name__ == '__main__':
student = Student("小明", 18, "20210001")
worker = Worker("张三", 30, "1001")
print("学生的属性和方法:")
print("姓名:", student.name)
print("年龄:", student.age)
print("学号:", student.student_id)
student.eat()
student.sleep()
student.study()
print("\n工人的属性和方法:")
print("姓名:", worker.name)
print("年龄:", worker.age)
print("工号:", worker.worker_id)
worker.eat()
worker.sleep()
worker.work()
```
输出结果如下:
```
学生的属性和方法:
姓名: 小明
年龄: 18
学号: 20210001
学生小明喜欢吃学生餐
学生小明喜欢在宿舍里睡觉
我爱学习
工人的属性和方法:
姓名: 张三
年龄: 30
工号: 1001
工人张三喜欢吃快餐
工人张三喜欢在工地上睡觉
我爱工作
```
阅读全文