编写一个Person抽象类,要求含有姓名(name)年龄(age)两个私有属性 以及吃饭(eat) 和睡觉(sleep)两个抽象方法,并写出带参构造方法,创建学生(student)和工人(worker) 两个类, 继承Person类,学生类多出了私有属性学号和学习方法(输出我爱学习), 工人类多出了私有属性工号和工作方法(输出我爱工作), 在主函数中创建学生和工人类 的实例对象,使用构造方法赋值,并输出所有属性和方法
时间: 2023-05-22 16:00:54 浏览: 168
好的,以下是我给出的代码:
```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
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("我爱学习")
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 = Student("小明", 18, "20210001")
worker = Worker("张三", 30, "20210002")
# 输出所有属性和方法
print("学生姓名:", student.name)
print("学生年龄:", student.age)
print("学生学号:", student.student_id)
student.eat()
student.sleep()
student.study()
print("工人姓名:", worker.name)
print("工人年龄:", worker.age)
print("工人工号:", worker.worker_id)
worker.eat()
worker.sleep()
worker.work()
```
希望这个代码能够满足你的需求。
阅读全文