2024.5.20
【题目描述】定义一个人员类People,其属性有:姓名、性别、年龄;基于People实现学生类Student,添加属性:学号、入学时间和入学成绩;基于People实现教师类Teacher,添加属性:职务、部门、工作时间;基于Student实现究生类Graduate,添加属性:研究方向和导师,分别定义其中的构造函数和输出函数。程序中定义各种类的对象,并完成测试。 基于以上类利用接口实现在职研究生类 GradOnWork。
程序中定义各种类的对象,并完成测试。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。
class People:
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
def display(self):
print("Name:", self.name)
print("Gender:", self.gender)
print("Age:", 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("Student ID:", self.student_id)
print("Admission Date:", self.admission_date)
print("Admission Score:", self.admission_score)
class Teacher(People):
def __init__(self, name, gender, age, position, department, work_years):
super().__init__(name, gender, age)
self.position = position
self.department = department
self.work_years = work_years
def display(self):
super().display()
print("Position:", self.position)
print("Department:", self.department)
print("Work Years:", self.work_years)
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("Research Area:", self.research_area)
print("Supervisor:", self.supervisor)
class GradOnWork(Graduate):
def __init__(self, name, gender, age, student_id, admission_date, admission_score, research_area, supervisor,
position, department, work_years):
super().__init__(name, gender, age, student_id, admission_date, admission_score, research_area, supervisor)
self.position = position
self.department = department
self.work_years = work_years
def display(self):
super().display()
print("Position:", self.position)
print("Department:", self.department)
print("Work Years:", self.work_years)
# 测试
if __name__ == "__main__":
# 创建对象并测试
p1 = People("Alice", "Female", 25)
print("People:")
p1.display()
print()
s1 = Student("Bob", "Male", 22, "S001", "2020-09", 95)
print("Student:")
s1.display()
print()
t1 = Teacher("Carol", "Female", 35, "Associate Professor", "Computer Science", 10)
print("Teacher:")
t1.display()
print()
g1 = Graduate("David", "Male", 28, "G001", "2019-09", 90, "Machine Learning", "Dr. Adams")
print("Graduate:")
g1.display()
print()
gow1 = GradOnWork("Eve", "Female", 30, "G002", "2018-09", 85, "Data Science", "Dr. Smith",
"Assistant Professor", "Data Science", 5)
print("GradOnWork:")
gow1.display()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通