请为教师工作证与学生工作证设计一个类结构,尽可能保证代码的重用率,病输出教师工作证和学生证信息
时间: 2024-03-03 18:47:24 浏览: 18
好的,我可以帮您设计这个类结构。
首先,我们可以定义一个基类 `WorkID`,其中包含了工作证号码和姓名两个属性,以及输出工作证信息的方法:
```python
class WorkID:
def __init__(self, work_id, name):
self.work_id = work_id
self.name = name
def get_info(self):
print("工作证号码:", self.work_id)
print("姓名:", self.name)
```
接下来,我们可以定义教师和学生的类,分别继承于 `WorkID` 类,并在其中添加额外的属性和方法。
对于教师,我们可以添加教育背景和职称两个属性,以及输出教师信息的方法 `print_teacher_info`:
```python
class Teacher(WorkID):
def __init__(self, work_id, name, education, title):
super().__init__(work_id, name)
self.education = education
self.title = title
def print_teacher_info(self):
self.get_info()
print("教育背景:", self.education)
print("职称:", self.title)
```
对于学生,我们可以添加学号和所在班级两个属性,以及输出学生信息的方法 `print_student_info`:
```python
class Student(WorkID):
def __init__(self, work_id, name, student_id, class_id):
super().__init__(work_id, name)
self.student_id = student_id
self.class_id = class_id
def print_student_info(self):
self.get_info()
print("学号:", self.student_id)
print("所在班级:", self.class_id)
```
这样,我们就可以通过多态性来调用不同工作证的 `print_info` 方法,输出教师和学生的信息。例如,对于一个教师和一个学生,我们可以这样输出他们的信息:
```python
teacher = Teacher("T001", "张三", "博士", "教授")
student = Student("S001", "李四", "20190001", "计算机科学与技术1班")
teacher.print_teacher_info()
print("-----------")
student.print_student_info()
```
输出结果为:
```
工作证号码: T001
姓名: 张三
教育背景: 博士
职称: 教授
-----------
工作证号码: S001
姓名: 李四
学号: 20190001
所在班级: 计算机科学与技术1班
```