网络编程
位置:首页>> 网络编程>> Python编程>> python基础之多态

python基础之多态

作者:qianqqqq_lu  发布时间:2022-04-05 10:06:06 

标签:python,基础,多态

多态

多态:顾名思义九四多种形态\状态,就是同一种行为对不同的子类[对象]有不同的行为表现
要想实现多态 必须有两个前提需要遵守:
1.必须存在一种继承关系,必须发生在父类和子类之间
2.重写:子类重写父类的方法
多态的优点:
多态可以增加程序的灵活性
增加程序的扩展性
只要具备某种方法,无论继承者是谁,定义者是谁,都可以去调用

python基础之多态

python基础之多态

案例演示


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()

python基础之多态


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)  #通过函数统一调用

python基础之多态


增加新类完全无需修改代码,只需将需要的代码添加上就是了

# 案例演示
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)  #通过函数统一调用

python基础之多态

来源:https://blog.csdn.net/weixin_44632711/article/details/120696257

0
投稿

猜你喜欢

  •  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图像梯度实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
手机版 网络编程 asp之家 www.aspxhome.com