Python 继承示例代码
class People(object):
"""人员基类"""
def __init__(self, name, sex, age):
self.name = name
self.sex = sex
self.age = age
def display(self):
"""显示人员基本信息"""
print(f"姓名: {self.name}, 性别: {self.sex}, 年龄: {self.age}")
class Student(People):
"""学生类,继承自People"""
def __init__(self, name, sex, age, stu_id, enroll_time, score):
super().__init__(name, sex, age) # 调用父类构造函数
self.stu_id = stu_id
self.enroll_time = enroll_time
self.score = score
def display(self):
"""显示学生信息"""
super().display() # 调用父类显示方法
print(f"学号: {self.stu_id}, 入学时间: {self.enroll_time}, 入学成绩: {self.score}")
class Teacher(People):
"""教师类,继承自People"""
def __init__(self, name, sex, age, position, department, work_time):
super().__init__(name, sex, age)
self.position = position
self.department = department
self.work_time = work_time
def display(self):
"""显示教师信息"""
super().display()
print(f"职务: {self.position}, 部门: {self.department}, 工作时间: {self.work_time}")
class Graduate(Student):
"""研究生类,继承自Student"""
def __init__(self, name, sex, age, stu_id, enroll_time, score, research_area, advisor):
super().__init__(name, sex, age, stu_id, enroll_time, score)
self.research_area = research_area
self.advisor = advisor
def display(self):
"""显示研究生信息"""
super().display()
print(f"研究方向: {self.research_area}, 导师: {self.advisor.name}")
class GradOnWork(Graduate, Teacher):
def init(self, name, sex, age, stu_id, enroll_time, score,
research_area, advisor, position, department, work_time):
# 直接初始化People部分
People.init(self, name, sex, age)
# 初始化Student部分
self.stu_id = stu_id
self.enroll_time = enroll_time
self.score = score
# 初始化Graduate部分
self.research_area = research_area
self.advisor = advisor
# 初始化Teacher部分
self.position = position
self.department = department
self.work_time = work_time
def display(self):
"""显示在职研究生信息"""
print("=== 学生信息 ===")
Graduate.display(self)
print("\n=== 教师信息 ===")
Teacher.display(self)
测试代码
if name == "main":
print("=== 测试People类 ===")
p = People("张三", "男", 30)
p.display()
print("\n=== 测试Student类 ===")
s = Student("李四", "女", 20, "2023001", "2023-09-01", 85.5)
s.display()
print("\n=== 测试Teacher类 ===")
t = Teacher("王教授", "男", 45, "教授", "计算机学院", "2010-08-15")
t.display()
print("\n=== 测试Graduate类 ===")
g = Graduate("赵同学", "女", 25, "2021001", "2021-09-01", 90.0, "人工智能", t)
g.display()
print("\n=== 测试GradOnWork类 ===")
gow = GradOnWork("钱老师", "男", 35, "2019001", "2019-09-01", 88.0,
"机器学习", t, "副教授", "信息学院", "2015-07-01")
gow.display()