python基础之多态
作者:qianqqqq_lu 发布时间:2022-04-05 10:06:06
标签:python,基础,多态
多态
多态:顾名思义九四多种形态\状态,就是同一种行为对不同的子类[对象]有不同的行为表现
要想实现多态 必须有两个前提需要遵守:
1.必须存在一种继承关系,必须发生在父类和子类之间
2.重写:子类重写父类的方法
多态的优点:
多态可以增加程序的灵活性
增加程序的扩展性
只要具备某种方法,无论继承者是谁,定义者是谁,都可以去调用
案例演示
class Animal:
def say_who(self):
'''
父类【基类】
:return:
'''
print('你是一个动物')
pass
pass
class Duck(Animal):
'''
继承于animal这个类 鸭子类【子类】派生类
'''
def say_who(self):
'''
在这里重写父类的方法
:return:
'''
print('我是鸭鸭丫')
pass
class Dog(Animal):
def say_who(self):
print('只是一只汪罢了')
pass
pass
duck1=Duck()
duck1.say_who()
dog=Dog()
dog.say_who()
class Animal:
def say_who(self):
'''
父类【基类】
:return:
'''
print('你是一个动物')
pass
pass
class Duck(Animal):
'''
继承于animal这个类 鸭子类【子类】派生类
'''
def say_who(self):
'''
在这里重写父类的方法
:return:
'''
print('我是鸭鸭丫')
pass
class Dog(Animal):
def say_who(self):
print('只是一只汪罢了')
pass
pass
# 使用统一的函数去调用
def commonInvoke(obj):
'''
同意调用的方法
:param obj: 对象的实例
:return:
'''
obj.say_who()
# duck1=Duck()
# duck1.say_who()
# dog=Dog()
# dog.say_who()
listObj=[Duck(),Dog()]
for item in listObj:
'''
循环调用函数
'''
commonInvoke(item) #通过函数统一调用
增加新类完全无需修改代码,只需将需要的代码添加上就是了
# 案例演示
class Animal:
def say_who(self):
'''
父类【基类】
:return:
'''
print('你是一个动物')
pass
pass
class Duck(Animal):
'''
继承于animal这个类 鸭子类【子类】派生类
'''
def say_who(self):
'''
在这里重写父类的方法
:return:
'''
print('我是鸭鸭丫')
pass
class Dog(Animal):
def say_who(self):
print('只是一只汪罢了')
pass
pass
class Bird(Animal):
def say_who(self):
print('门前大桥下,停着一只鸟')
# 使用统一的函数去调用
def commonInvoke(obj):
'''
同意调用的方法
:param obj: 对象的实例
:return:
'''
obj.say_who()
# duck1=Duck()
# duck1.say_who()
# dog=Dog()
# dog.say_who()
listObj=[Duck(),Dog(),Bird()]
for item in listObj:
'''
循环调用函数
'''
commonInvoke(item) #通过函数统一调用
来源:https://blog.csdn.net/weixin_44632711/article/details/120696257


猜你喜欢
- python爬虫--爬取网易云音乐评论方1:使用selenium模块,简单粗暴。但是虽然方便但是缺点也是很明显,运行慢等等等。方
- 问题描述前端时间在公司的时候,要使用angular开发一个网站,因为angular很适合前后端分离,所以就做了一个简单的图书管理系统来模拟前
- 1. 引言之前已经有博客专门介绍了Python中的列表生成式,可能大家还不太擅长。这里推荐九个Python列表生成式的面试题(从简单到困难排
- 在后端有许多的封装方法来截取字符串或者对字符串的操作,同样前端也有相应的方法。有一个data数据为ipaddrdata() {
- 随着编程语言的发展,Go 还很年轻。它于 2009 年 11 月 10 日首次发布。其创建者Robert GriesemerRob Pike
- 本文较为详细的讲述了Python中常用的模块,分享给大家便于大家查阅参考之用。具体如下:1.内置模块(不用import就可以直接使用)常用内
- zyw147 提出问题:ASP读取指定xml 的节点?怎么用ASP《不是JS》取出指定的节点? 例如我想取出北京,我在ASP客户端提交的是
- 最近有朋友问js 如何打印预览,今天就来讲解一下,首先了解一下打印原理,其实局部打印页面很简单。就是把你需要打印的部分做一个起始标记,至于标
- 前言:大部分的文件上传功能都是用input标签实现,这样就完全可以把它看作一个输入框,可以通过send_keys()指定文件进行上传了。本章
- 前言最近想做个小玩意,需要在mac端实现屏幕截图,搜了下网上中文资源都比较老旧,于是查了下,发现有些好用的Python库已经支持Mac 以及
- 怎么增大MySQL数据库连接数,MYSQL数据库安装完成后,默认连接数是100,流量稍微大一点的论坛或网站这个连接数是不够哟用
- Mac系统上虽然自带PHP和Apache,但是有时不是我们想要的版本呢。今天我们就在macOS Sierra(10.12.1)上安装比较新的
- 本文实例为大家分享了python手写均值滤波的具体代码,供大家参考,具体内容如下原理与卷积类似,设置一个n*n的滤波模板,滤波模板内的值累加
- 这篇文章主要介绍了一种简单的MySQL数据库安装方法,详细内容请大家参考下文:虽然安装MySQL数据库的文章很多,但是我看后感觉对于初学者来
- 1、两个函数介绍总得来说,connectedComponents()仅仅创建了一个标记图(图中不同连通域使用不同的标记,和原图宽高一致),c
- git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态git stash #把所有没有提交的修改暂存到stash里
- 关于oracle 优化的内容很多,概念庞杂,不过可以总结出一个大纲性的东西作为需要考虑的方向,然后再逐步细化。oracle优化按重要性需要考
- 正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义cl
- 背景索引是把 * 剑,在提升查询速度的同时会减慢DML的操作。毕竟,索引的维护需要一定的成本。所以,对于索引,要加上该加的,删除无用的。前者是
- 这篇文章主要介绍了opencv python图像梯度实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需