铸器篇-Day72 继承基础:子类继承父类

0 次阅读 2026-10-20 09:13

📖 知识点

继承语法

 

class 子类名(父类名):
    pass

 

  • 父类(基类):已经写好的原始类,提供通用属性、方法

  • 子类(派生类):继承父类,自动拥有父类所有非私有属性与方法

  • 子类可以新增自己独有的属性、方法

示例代码

 

# 父类
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def show_info(self):
        print(f"姓名:{self.name},年龄:{self.age}")

# 子类:VIP学员,继承Student
class VipStudent(Student):
    pass

# 实例化子类对象
vip_stu = VipStudent("小王",17)
# 直接调用父类定义的方法
vip_stu.show_info()

 

运行输出:

 

姓名:小王,年龄:17

 

要点:

  1. 子类自动获得父类的属性、实例方法

  2. pass代表暂时不新增任何逻辑,直接复用父类全部能力

  3. 子类可以新增专属方法,父类无法使用子类新增的方法

带新增方法示例

 

class VipStudent(Student):
    def exclusive_course(self):
        print(f"{self.name} 可以学习VIP专属课程")

vip_stu = VipStudent("小王",17)
vip_stu.show_info()
vip_stu.exclusive_course()

 

💡 一句话理解父类 = 通用兵器图纸;子类 = 在这个图纸基础上,打造升级版兵器。

⚔️ Kata 实战任务

任务需求:

  1. 编写父类Student:__init__接收 name、score;方法show_score()打印姓名和分数

  2. 定义子类HonorStudent(Student),继承 Student,新增方法get_award(),打印xxx获得优秀学员奖状

  3. 实例化子类对象:hs = HonorStudent ("小雅",95)

  4. 调用继承来的 show_score (),再调用子类独有的 get_award ()

参考代码

 

# 父类
class Student:
    def __init__(self, name, score):
        self.name = name
        self.score = score

    def show_score(self):
        print(f"学员:{self.name},分数:{self.score}")

# 子类:优秀学员,继承Student
class HonorStudent(Student):
    # 子类新增专属方法
    def get_award(self):
        print(f"{self.name} 获得优秀学员奖状!")


hs = HonorStudent("小雅", 95)
# 调用父类继承的方法
hs.show_score()
# 调用子类自己新增的方法
hs.get_award()

 

运行输出:

 

学员:小雅,分数:95
小雅 获得优秀学员奖状!

 

🧠 思考题

  1. 普通 Student 对象能不能调用 get_award ()?为什么?

  2. 继承最大的好处是什么,如果不用继承该怎么实现同样功能?