from abc import ABC, abstractmethod
from datetime import datetime
# 定义人员类
class People:
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
def display(self):
print("姓名:", self.name)
print("性别:", self.gender)
print("年龄:", self.age)
# 定义学生类
class Student(People):
def __init__(self, name, gender, age, student_id, admission_date, admission_score):
super().__init__(name, gender, age)
self.student_id = student_id
self.admission_date = admission_date
self.admission_score = admission_score
def display(self):
super().display()
print("学号:", self.student_id)
print("入学时间:", self.admission_date)
print("入学成绩:", self.admission_score)
# 定义教师类
class Teacher(People):
def __init__(self, name, gender, age, position, department, hire_date):
super().__init__(name, gender, age)
self.position = position
self.department = department
self.hire_date = hire_date
def display(self):
super().display()
print("职务:", self.position)
print("部门:", self.department)
print("工作时间:", self.hire_date)
# 定义研究生类
class Graduate(Student):
def __init__(self, name, gender, age, student_id, admission_date, admission_score, research_area, supervisor):
super().__init__(name, gender, age, student_id, admission_date, admission_score)
self.research_area = research_area
self.supervisor = supervisor
def display(self):
super().display()
print("研究方向:", self.research_area)
print("导师:", self.supervisor)
# 定义在职研究生接口
class GradOnWork():
@abstractmethod
def display(self):
pass
# 实现在职研究生类
class WorkingGraduate(Graduate):
def __init__(self, name, gender, age, student_id, admission_date, admission_score, research_area, supervisor,
company):
super().__init__(name, gender, age, student_id, admission_date, admission_score, research_area, supervisor)
self.company = company
def display(self):
super().display()
print("就职公司:", self.company)
# 测试类的功能
if __name__ == "__main__":
# 创建学生对象
student = Student("张三", "男", 20, "2021001", datetime(2021, 9, 1), 90)
print("学生信息:")
student.display()
print()
# 创建教师对象
teacher = Teacher("李老师", "女", 35, "副教授", "计算机系", datetime(2010, 9, 1))
print("教师信息:")
teacher.display()
print()
# 创建研究生对象
graduate = Graduate("王五", "男", 25, "2022001", datetime(2022, 9, 1), 95, "人工智能", "赵老师")
print("研究生信息:")
graduate.display()
print()
# 创建在职研究生对象
working_graduate = WorkingGraduate("赵六", "女", 28, "2022002", datetime(2022, 9, 1), 92, "大数据", "刘老师", "石家庄铁道有限公司")
print("在职研究生信息:")
working_graduate.display()