__str__方法重写
# 定义一个名为Person的类,它默认继承自Python的内置对象object。
class Person:
# __init__方法是类的构造函数,用于初始化新创建的对象
def __init__(self, name, age):
# self.name是对象的属性,用于存储人的名字
self.name = name
# self.age是对象的属性,用于存储人的年龄
self.age = age
# 定义一个名为show的方法,用于打印人的名字和年龄
def show(self):
# 使用f-string格式化字符串,并打印出来
print(f'大家好,我叫{self.name},我今年{self.age}岁')
# 定义一个名为Student的类,它继承自Person类
class Student(Person):
# 编写初始化的方法,用于初始化Student类的实例
def __init__(self, name, age, stuno):
# 使用super()函数调用父类(Person)的__init__方法,传入name和age参数
super().__init__(name, age)
# self.stuno是Student类特有的属性,用于存储学生的学号
self.stuno = stuno
# 重写父类的show方法
def show(self):
# 使用super()函数调用父类(Person)的show方法
super().show()
# 打印出学生的学校信息和学号
print(f'我来自XXX大学,我的学号是{self.stuno}')
# 定义一个名为Doctor的类,它继承自Person类
class Doctor(Person):
# 编写初始化的方法,用于初始化Doctor类的实例
def __init__(self, name, age, department):
# 使用super()函数调用父类(Person)的__init__方法,传入name和age参数
super().__init__(name, age)
# self.department是Doctor类特有的属性,用于存储医生的工作室或科室
self.department = department
# 重写父类的show方法
def show(self):
# 这里没有调用父类的show方法(如果取消注释super().show(),则会调用)
# 直接打印出医生的名字、年龄和工作室信息
print(f'大家好,我叫{self.name},我今年{self.age}岁,我的工作室是:{self.department}')
# 创建Student类的一个实例(对象),名字是'cmm',年龄是20,学号是'1001'
stu = Student('cmm', 20, '1001')
# 调用stu对象的show方法,打印学生信息
stu.show()
# 创建Doctor类的一个实例(对象),名字是'zyy',年龄是32,工作室是'wk'
doctor = Doctor('zyy', 32, 'wk')
# 调用doctor对象的show方法,打印医生信息
doctor.show()
注意事项
- 在
Student
和Doctor
类的__init__
方法中,super().__init__(name, age)
用于调用父类Person
的__init__
方法,确保name
和age
属性被正确初始化。 Student
和Doctor
类都重写了Person
类的show
方法。在Student
类的show
方法中,通过super().show()
调用了父类的show
方法,然后再添加了自己的信息。而在Doctor
类的show
方法中,直接打印了所有信息,没有调用父类的show
方法(如果希望也打印出父类中的信息,可以取消注释super().show()
)。- 当你创建一个
Student
或Doctor
对象并调用其show
方法时,Python会执行该子类中的show
方法。如果子类中的show
方法调用了super().show()
,那么父类中的show
方法也会被执行。
输出
大家好,我叫cmm,我今年20岁
我来自XXX大学,我的学号是1001
大家好,我叫zyy,我今年32岁,我的工作室是:wk
(仅供参考)
Comments NOTHING