当前位置: 首页 > article >正文

15分钟学Python 第22天 :继承与多态

Day 22:继承与多态

一、继承

1. 什么是继承?

继承是一种从已有类(父类或基类)创建新类(子类或派生类)的机制。子类可以获得父类的所有属性和方法,并且还可以增加新的属性和方法,或者重写父类的方法。

2. 继承的类型
  • 单继承:一个子类只有一个父类。
  • 多重继承:一个子类可以有多个父类。
  • 层次继承:多个子类继承同一个父类。
3. 继承的语法
class Parent:
    def __init__(self, name):
        self.name = name

    def greet(self):
        return f"Hello, my name is {self.name}."


class Child(Parent):
    def greet(self):
        return f"Hi, I'm {self.name}!"

二、示例代码

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

    def speak(self):
        return "Generic animal sound."

# 子类
class Dog(Animal):
    def speak(self):
        return "Woof!"

class Cat(Animal):
    def speak(self):
        return "Meow!"

# 创建对象
dog = Dog("Buddy")
cat = Cat("Mittens")

# 方法调用
print(dog.speak())  # 输出: Woof!
print(cat.speak())  # 输出: Meow!

三、代码运行流程图

下面是上面代码的运行流程图:

+-----------------+
|   Animal Class  |
+-----------------+
      |
      v
+-----------------+
|     Dog Class   | <----+
+-----------------+       |
|  speak()        |       |
+-----------------+       |
      |                   |
      v                   |
    "Woof!"              |
                         |
+-----------------------+
|     Cat Class         |
+-----------------------+
|  speak()              |
+-----------------------+
      |
      v
    "Meow!"

四、如何使用继承

1. 共享代码

通过继承,可以在子类中重用父类的方法和属性,这样可以减少代码的重复。

2. 扩展功能

子类可以添加新的方法和属性,扩展父类的功能。

3. 方法重写

子类可以重写父类的方法,以实现特定的功能。

五、实例:动物类

构建一个动物管理系统,展示继承的强大之处。

class Animal:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def make_sound(self):
        raise NotImplementedError("Subclass must implement abstract method.")

class Dog(Animal):
    def make_sound(self):
        return "Woof!"

class Cat(Animal):
    def make_sound(self):
        return "Meow!"

animals = [Dog("Buddy", 3), Cat("Whiskers", 2)]

for animal in animals:
    print(f"{animal.name} says: {animal.make_sound()}")

六、提纲摘要

主题描述示例
继承概念从父类创建子类class Child(Parent): ...
单继承一个父类对应一个子类class B(A): ...
多重继承一个子类对应多个父类class C(A, B): ...
方法重写子类重新定义父类的方法def method(self): ...
代码复用子类可以使用父类的方法和属性super().__init__()

七、多态

1. 什么是多态?

多态是指不同类的对象可以通过相同的接口进行访问。这意味着你可以用同样的方式调用不同类中的方法,而不需要了解具体的实现细节。

2. 多态的例子

通过上面的动物类示例,我们可以使用相同的方法访问所有动物,不论它们的具体类型。

for animal in animals:
    print(animal.make_sound())

这段代码将会输出每个动物的声音,尽管我们不知道每个动物对象的具体类型。

八、如何实现多态

  1. 定义相同名称的方法:确保不同类中有同名的方法。
  2. 使用基类的引用:通过基类的引用操作子类对象。

九、实例:多态实现

class Bird(Animal):
    def make_sound(self):
        return "Chirp!"

animals = [Dog("Buddy", 3), Cat("Whiskers", 2), Bird("Tweety", 1)]

for animal in animals:
    print(f"{animal.name} says: {animal.make_sound()}")

十、总结

1. 继承的优势
  • 代码复用
  • 可维护性高
  • 逻辑清晰,层次分明
2. 多态的优点
  • 灵活性
  • 可扩展性
  • 改善代码可读性

练习题

  1. 创建一个新的动物类(如兔子),并确保它能正确实现多态。
  2. 定义一个基类 Shape,包含一个方法 area(),再定义几个派生类(如 CircleRectangle),实现该方法。

项目作业

设计一个简单的图形绘制程序,使用继承和多态实现不同图形的绘制。要求设定一个基类 Shape,并根据形状类型(如圆形、矩形、三角形等)实现该方法。

参考资料

  • Python官方文档
  • 《Python编程:从入门到实践》
  • 在线Python教程

通过上述内容,希望您对继承和多态有了更深入的理解。请随时向我提问,或告知我您的下一个学习主题!


怎么样今天的内容还满意吗?再次感谢观众老爷的观看。
最后,祝您早日实现财务自由,还请给个赞,谢谢!


http://www.kler.cn/news/321308.html

相关文章:

  • 铨顺宏科技携RTLS+RFID技术亮相工博会!
  • Python--循环
  • 数组组成的最小数字 - 华为OD统一考试(E卷)
  • OmniAns丨OPENAIGC开发者大赛高校组AI创作力奖
  • 即插即用篇 | DenseNet卷土重来! YOLOv8 引入全新密集连接卷积网络 | ECCV 2024
  • CentOs-Stream-9 解决此系统未向授权服务器注册问题
  • 行情叠加量化,占据市场先机!
  • 计算机网络1
  • 【数据结构】假设二叉树采用二叉链表存储,编写一棵二又树中序遍历的非递归算法。
  • Apache技术深度解析与实战案例
  • Pydantic 是一个强大的 Python 库
  • EVM理解:深入理解EVM的运作方式,包括Gas机制、交易执行流程等。
  • 【IOS】申请开发者账号(公司)
  • C++ 排序算法
  • 基于51单片机的方向盘模拟系统
  • OJ在线评测系统 后端 使用代理模式编写测试类 并 实现核心业务判题流程
  • 开源治理聚光灯 | 企业规模不同,治理方式各显神通
  • 【openwrt-21.02】VPN Passthrough系列之L2TP Passthrough实现
  • 谷神后端$vs.dbTools.list
  • Windows安装Vim,并在PowerShell中直接使用vim
  • 【裸机装机系列】16.kali(ubuntu)-安装linux和win双系统-重装win11步骤
  • React Native中如何调用iOS的Face ID和Android的生物识别,react-native-biometrics
  • 【深度学习】04-Cnn卷积神经网络-01- 卷积神经网络概述/卷积层/池化层/分类案例精讲
  • 【MySQL】数据库--索引
  • 未来数字世界相关技术、应用:AR/VR/MR;数字人、元宇宙、全息显示
  • 开源链动 2+1 模式 S2B2C 商城小程序:激活 KOC,开启商业新征程
  • 将Mixamo的模型和动画导入UE5
  • C--结构体和位段的使用方法
  • 一道涉及 Go 中的并发安全和数据竞态(Race Condition)控制的难题
  • 碎纸片的自动拼接复原技术