# 定义一个人的类 class Person(object): # 定义一个人类的实例属性 def __init__(self, name, age): self.name = name self.age = age # 定义一个人类的info() 方法 def info(self): print(self.name, self.age) # 定义一个学生类 class Student(Person): # 定义学生类是实例属性 def __init__(self, age, name, stu_no): # 继承人类的实例属性到学生类是实例属性中来 super().__init__(name, age) # 定义学生类自有是实例属性 self.stu_no = stu_no # 定义一个老师类 class Teacher(Person): # 定义老师类的实例属性 def __init__(self, age, name, techofyear): # 继承人类的实例属性到老师类属性中来 super().__init__(name, age) # 定义老师类的自有的实例属性 self.teachofyear = techofyear # 实例化学生类对象 stu = Student('张三', 20, '1001') # 调用学生类对象的info()方法 stu.info() """由上面看到的新实例的学生对象中的学号是没有输出的,就是学生父类(Person类)中的 info 方法已经满足不了学生类是自有属性的输出,这时我们必须考虑重写学生类的info方法 来满足学生的自有实例属性的输出======== 如下,我们来重写学生和老师的info 方法 """ # 定义一个人的类 class Person(object): # 定义一个人类的实例属性 def __init__(self, name, age): self.name = name self.age = age # 定义一个人类的info() 方法 def info(self): print(self.name, self.age) # 定义一个学生类 class Student(Person): # 定义学生类是实例属性 def __init__(self, age, name, stu_no): # 继承人类的实例属性到学生类是实例属性中来 super().__init__(name, age) # 定义学生类自有是实例属性 self.stu_no = stu_no # 重写学生类的 info() 方法 def info(self): # 重写的学生方法还是需要父类中的原有方法,所有这里要继承过来 super().info() # 把学生类中的自有方法加到自定义的info()方法中 print(self.stu_no) # 定义一个老师类 class Teacher(Person): # 定义老师类的实例属性 def __init__(self, age, name, techofyear): # 继承人类的实例属性到老师类属性中来 super().__init__(name, age) # 定义老师类的自有的实例属性 self.teachofyear = techofyear def info(self): super().info() print(self.teachofyear) stu2 = Student('张张张',22,'1002') stu2.info()