Python面向对象之多态原理与用法案例分析
作者:小飞侠v科比 发布时间:2023-08-16 00:09:59
标签:Python,面向对象,多态
本文实例讲述了Python面向对象之多态原理与用法。分享给大家供大家参考,具体如下:
目标
多态
面向对象三大特性
封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中
定义类的准则
继承 实现代码的重用,相同的代码不需要重复的编写
设计类的技巧
子类针对自己特有的需求,编写特定的代码
多态 不同的 子类对象 调用相同的 父类方法,产生不同的执行结果
多态 可以 增加代码的灵活度
以 继承 和 重写父类方法 为前提
是调用方法的技巧,不会影响到类的内部设计
多态案例演练
需求
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)
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/kai46385076/article/details/99664031
0
投稿
猜你喜欢
- 1、HTML部分<Col span="2">上传文件:</Col><Col span=&q
- 本文实例为大家分享了python使用tkinter实现简单计算器的具体代码,供大家参考,具体内容如下class Counter: #引入t
- 用MSI安装包安装根据自己的操作系统下载对应的32位或64位安装包。按如下步骤操作:MySQL数据库官网的下载地址http://dev.my
- import cv2 as cvimport numpy as npimport matplotlib.pyplot as plt# 设置兼
- 前言 日益增长的分布式应用需求要求实现更好分布式的软件环境,不断推动着分布式技术的进步。Oracle数据复制是实现分布式数据环境的一种技术,
- torch.Tensor.detach()的使用detach()的官方说明如下:Returns a new Tensor, detached
- 本文实例讲述了Python将xml和xsl转换为html的方法。分享给大家供大家参考。具体分析如下:这里需要用libxml2,所以还要先安装
- 一、前言Go程序像C/C++一样,如果开发编码考虑不当,会出现cpu负载过高的性能问题。如果程序是线上环境或者特定场景下出现负载过高,问题不
- 作者:catmelo 本文版权归作者所有链接:https://www.cnblogs.com/catmelo/p/4162101.html本
- Python编程中对于某些需要重复调用的程序,可以使用函数进行定义,基本形式为:def 函数名(参数1, 参数2, ……, 参数N):执行语
- 1.打包多个py文件并且去除cmd黑框格式:pyinstaller.exe -F 路径\文件名.py空格路径\文件名.py空格--nocon
- 安装1、先安装vscode,然后在扩展中搜索Remote SSH插件并安装。2、我要连接远程Ubuntu系统的服务器,所以需要在服务器上安装
- 本文实例讲述了ThinkPHP框架下微信支付功能总结。分享给大家供大家参考,具体如下:摘要此文主要为个人解决 ThinkPHP3.2.3 下
- 本文实例讲述了Python实现PS滤镜中马赛克效果。分享给大家供大家参考,具体如下:这里利用 Python 实现PS 滤镜中的马赛克效果,具
- time()在PHP中是得到一个数字,这个数字表示从1970-01-01到现在共走了多少秒,很奇怪吧 不过这样方便计算, 要找出前一天的时间
- 当然首先得去下载ASPupload 程序,安装后使用!官方网站下载:http://www.aspupload.com/使用ASP实现文件上载
- 简介字符串序列用于表示和存储文本,python中字符串是不可变的,一旦声明,不能改变通常由单引号(' ),双引号(" ),
- 这次我们拿小龙猫来做演示这里就不必多说了,也就导入几个用到的包:SOURCE_PATH:这个是GIF的路径OUTPUT_PATH:这个是每一
- 基于 RSA 加密算法的接口鉴权方案假设接口调用者是客户端,接口提供方是服务端,则此方案存在以下规则:客户端需要使用 RSA 算法(1024
- 1. 更新日志1.1. v1.01.1.1. 破坏性变更gorm.Open返回类型为*gorm.DB而不是gorm.DB更新只会更新更改的字