首页 > 编程语言 >第十八课:Python学习之多态

第十八课:Python学习之多态

时间:2024-10-22 13:20:03浏览次数:8  
标签:name 第十八 Python self 多态 Dog game def

多态

目标

  • 多态

面向对象三大特性

  1. 封装 根据 职责属性方法 封装 到一个抽象的

    • 定义类的准则
  2. 继承 实现代码的重用,相同的代码不需要重复的编写

    • 设计类的技巧
    • 子类针对自己特有的需求,编写特定的代码
  3. 多态 不同的 子类对象 调用相同的 父类方法,产生不同的执行结果

    • 多态 可以 增加代码的灵活度
    • 继承重写父类方法 为前提
    • 是调用方法的技巧,不会影响到类的内部设计

在这里插入图片描述

多态案例演练

需求

  1. Dog 类中封装方法 game
    • 普通狗只是简单的玩耍
  2. 定义 XiaoTianDog 继承自 Dog,并且重写 game 方法
    • 哮天犬需要在天上玩耍
  3. 定义 Person 类,并且封装一个 和狗玩 的方法
    • 在方法内部,直接让 狗对象 调用 game 方法

在这里插入图片描述

案例小结

  • Person 类中只需要让 狗对象 调用 game 方法,而不关心具体是 什么狗
    • game 方法是在 Dog 父类中定义的
  • 在程序执行时,传入不同的 狗对象 实参,就会产生不同的执行效果

多态 更容易编写出出通用的代码,做出通用的编程,以适应需求的不断变化!

class Dog(object):

    def __init__(self, name):
        self.name = name

    def game(self):
        print("%s 蹦蹦跳跳的玩耍..." % self.name)


class XiaoTianDog(Dog):

    def game(self):
        print("%s 飞到天上去玩耍..." % self.name)


class Person(object):

    def __init__(self, name):
        self.name = name

    def game_with_dog(self, dog):

        print("%s 和 %s 快乐的玩耍..." % (self.name, dog.name))

        # 让狗玩耍
        dog.game()


# 1. 创建一个狗对象
# wangcai = Dog("旺财")
wangcai = XiaoTianDog("飞天旺财")

# 2. 创建一个小明对象
xiaoming = Person("小明")

# 3. 让小明调用和狗玩的方法
xiaoming.game_with_dog(wangcai)
        

本文提供的内容仅用于个人学习、研究,如有相关权利人的合法权利,请及时通知作者,予以删除!

标签:name,第十八,Python,self,多态,Dog,game,def
From: https://blog.csdn.net/HappyAcmen/article/details/143025053

相关文章

  • 第十七课:Python学习之单例模式
    单例目标单例设计模式__new__方法Python中的单例01.单例设计模式设计模式设计模式是前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对某一特定问题的成熟的解决方案使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性单例设......
  • python——扑克牌案列
    斗地主发牌程序:模拟一个斗地主发牌程序,实现对三个玩家进行手牌的派发,实现功能:**********欢迎进入XX斗地主**********请输入玩家姓名:<用户控制台输入A>请输入玩家姓名:<用户控制台输入B>请输入玩家姓名:<用户控制台输入C>洗牌中...洗牌完成!发牌中...发牌完成!A:<......
  • python--学生管理系统案列
    1.编写一个程序,模拟一个简单的学生管理系统。要求用户可以添加学生信息,查看学生列表和每个学生的信息,删除学生信息等操作。使用字典实现,键为学生的姓名,值为一个包含学生信息的字典(包括学号、班级、成绩等)。******************************欢迎使用学生管理系统************......
  • 【LeetCode】动态规划—790. 多米诺和托米诺平铺(附完整Python/C++代码)
    动态规划—790.多米诺和托米诺平铺题目描述前言基本思路1.定义2.理解问题和递推关系3.解决方法4.进一步优化5.小总结代码实现Python代码Python代码解释总结C++代码C++代码解释总结总结题目描述前言本文将详细讨论LeetCode上的"多米诺和三米诺平铺"问题。......
  • python爬虫数据存进mysql数据库
    一、安装mysql和mysqlworkbench我已经在电脑上安装了最新的mysql8.2.0,配置好环境变量,在命令提示符中以管理员的身份初始化并成功启动mysql数据库。前期因为以前的mysql没有卸载干净,导致mysql一直无法启动服务。所以一定要保证以前的mysql卸载干净才能重新安装,以前没有安装过......
  • 在Python中使用连接池
    在数据库操作中,频繁地打开和关闭连接会消耗大量的资源和时间,在一些需要高并发的场景,我们就需要连接池技术优化这一问题。本文以Python中的SQLite数据库为例,介绍如何使用连接池来提升数据操作的效率。对于使用SQLite这样的轻量级数据库,虽然连接的开销相对较小,但在高并发......
  • 这些Python代码加速工具,你都用过吗?
    优化代码的工具会让代码变得更简洁,或者更迅速!一起来了解了解吧。NumPy、SciPy、Sage和Pandas先说NumPy,它的核心是一个多维数字数组的实现。除了这个数据结构之外,还实现了若干个函数和运算符,可以高效地进行数组运算。并且对于被调用的次数进行了精简。它可以被用来进行极......
  • Python语法探索:解锁编程艺术的大门
    Python,一种被广泛赞誉为“优雅”、“明确”及“简单”的高级编程语言,自1991年由GuidovanRossum创造以来,已经从一门小众脚本语言成长为全球范围内应用于网页开发、数据分析、人工智能等多个领域的强大工具。本文旨在为初学者和进阶开发者提供一份详尽的Python语法指南,通过实例解......
  • 利用 Python 进行地理空间数据处理的工具
    本文将介绍九个常用的地理空间数据处理工具,包括GeoPandas、Fiona、Rasterio、Shapely、Pyproj、Descartes、Rtree、Geopy和Folium。这些工具覆盖了从地理空间数据读写、几何操作、坐标转换到地图绘制等多个方面,是地理信息系统(GIS)领域不可或缺的技术栈。1.GeoPandas:地理数据......
  • 11种经典时间序列预测方法:理论、Python实现与应用
    时间序列分析和预测在现代数据科学中扮演着关键角色,广泛应用于金融、经济、气象学和工程等领域。本文将总结11种经典的时间序列预测方法,并提供它们在Python中的实现示例。这些方法包括:自回归(AR)移动平均(MA)自回归移动平均(ARMA)自回归积分移动平均(ARIMA)季节性自回归积分......