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

什么是多态python_Python的多态是什么

在面向对象程序设计中,除了封装和继承特性外,多态也是一个非常重要的特性,下面详细了解什么是多态。

我们都知道,Python 是弱类型语言,即在使用变量时,无需为其指定具体的数据类型,这就可能出现,同一个变量会赋值不同的类对象,例如:class Bird:

def move(self, field):

print('鸟在%s' % field)

class Dog:

def move(self, field):

print('狗在%s' % field)

a = Bird()

a.move("飞")

a = Dog()

a.move("跑")

运行结果为:鸟在飞

狗在跑

可以看到,a 可以被先后赋值为 Bird 类和 Dog 类的对象。而在此基础上,发生多态还要满足以下 2 个前提条件:继承:多态一定是发生在子类和父类之间;重写:子类重写了父类的方法。

因此,下面程序是对前面代码的改写:class Animal:

def move(self,field):

print("动物在%s" % field)

class Bird(Animal):

def move(self, field):

print('鸟在%s' % field)

class Dog(Animal):

def move(self, field):

print('狗在%s' % field)

a = Animal()

a.move("叫")

a = Bird()

a.move("飞")

a = Dog()

a.move("跑")运行结果为:

动物在叫

鸟在飞

狗在跑

此程序中,Bird 和 Dog 类都继承自 Animal 类,且都各自重写了父类的 move() 方法。从运行结果可以看出,同一个变量 a 在执行同一个 move() 方法时,由于 x 指向的对象不同,因此实际调用的并不是同一个 move() 方法,这就是多态。更多学习内容,请点击Python学习网。

相关文章:

  • python谁发明的1003python谁发明的_PAT乙级1003-Python
  • python用户输入10个_2019-07-18 python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明。...
  • python能为我们做什么读后感作文_《与运气竞争》读书笔记 坚韧不拔|静水流深|读书|写作|博雅|数据分析|Python|商业|独立·独特·自立门户 kebook...
  • 三因素方差分析_菜鸟也爱数据分析之SPSS篇——多因素方差分析
  • aimesh r6400 开_适合家用的路由器有哪些?
  • 调用赋码远程服务异常_用REST方式访问wcf服务,post时老报“远程服务器返回异常: (400) 异常的请求”...
  • mysql交互操作过程中使用的语言是_使用mySQL与数据库进行交互(一)
  • mysql 从如何重新同步_如何重置(重新同步)MySQL主从复制
  • mysql 子查询索引失效_mysql 索引失效的情况
  • mysql5.7注册码_Mysql5.7 用户与授权
  • mysql左右连接语法_图解MySQL 内连接、外连接、左连接、右连接、全连接……太多了...
  • mysql增加缓存的命令_MySQL查询缓存设置 提高MySQL查询性能 | 学步园
  • mysql desc limit_MySql sql优化之order by desc/asc limit M
  • mysql mycat java_mysql读写分离实现 jdk+mycat环境部署
  • rocketmq技术内幕:rocketmq架构设计与实现原理_这份553页的RocketMQ神仙手册在Github上了标星70.5k+实在太香了...
  • 2019.2.20 c++ 知识梳理
  • Android Volley源码解析
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • jQuery(一)
  • Koa2 之文件上传下载
  • PHP的Ev教程三(Periodic watcher)
  • Promise面试题2实现异步串行执行
  • redis学习笔记(三):列表、集合、有序集合
  • 对JS继承的一点思考
  • 观察者模式实现非直接耦合
  • 记录一下第一次使用npm
  • 普通函数和构造函数的区别
  • 前端相关框架总和
  • 巧用 TypeScript (一)
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 转载:[译] 内容加速黑科技趣谈
  • 字符串匹配基础上
  • 阿里云移动端播放器高级功能介绍
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #Spring-boot高级
  • (2015)JS ES6 必知的十个 特性
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (五)关系数据库标准语言SQL
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net framework profiles /.net framework 配置
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 读取 JSON格式的数据
  • .NET 反射的使用
  • .NET 使用配置文件
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池