python面向对象的三大特性之一多态
多态
多态的特性是调用不同的子类将会产生不同的行为,而无需明确知道这个子类实际上是什么
说白了就是,不同的对象调用相同的方法,产生不同的行为
例如:s1是字符串类型,w1是列表,两个完全不同的对象,他们都可以调用len方法,而得出的结果不同

多态实际上是依附于继承的两种含义:"改变"和"扩展"本身就意味着必须有机制去选用你改变/扩展过的版本,多态实质上就是继承的实现细节;
子类实例化后调用基类的方法,w1.turn_ice()叫做多态;
class H20:
def __init__(self,name,temerature):
self.name = name
self.temerature = temerature
def turn_ice(self):
if self.temerature < 0:
print("[%s]温度太低结冰了"%self.name)
elif self.temerature > 0 and self.temerature < 100:
print("[%s]液化成水" % self.name)
elif self.temerature > 100:
print("[%s]温度太高变成水蒸气" % self.name)
class Water(H20):
pass
class Ice(H20):
pass
class Steam(H20):
pass
w1 = Water("水",25)
i1 = Ice("冰",-20)
s1 = Steam("水蒸气",3000)
w1.turn_ice() #执行过程中不同的对象调用相同的方法
i1.turn_ice()
s1.turn_ice()
#或者定义一个接口来执行上面的调用
def func(obj):
obj.turn_ice()
func(w1)
func(i1)
func(s1)
python面向对象的三大特性之一多态的更多相关文章
- Python - 面向对象编程 - 三大特性之多态
前置知识 封装 详解文章:https://www.cnblogs.com/poloyy/p/15203989.html 封装根据职责将属性.方法封装到一个抽象的类中 定义类的准则-封装 继承 详解文章 ...
- Java基础-面向对象第三大特性之多态(polymorphism)
Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...
- Java学习笔记二十五:Java面向对象的三大特性之多态
Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...
- Python 面向对象的三大特性:封装,继承,多态
# 面向对象的三大特性:封装,继承,多态 # 继承的影响:资源的继承,资源的使用,资源的覆盖,资源的累加 # 资源的继承,在Python中的继承是指能使用父类的资源,而不是说在子类也复制一份父类代码到 ...
- Python 面向对象的三大特性
面向对象的三大特性:继承,封装,多态 什么时候用封装: 同一种功能的时候, 譬如:把一部分数据或方法,封装到同一个类的中 PS:在构造方法中,原始数据中....
- Python - 面向对象编程 - 三大特性之继承
继承 继承也是面向对象编程三大特性之一 继承是类与类的一种关系 定义一个新的 class 时,可以从某个现有的 class 继承 新的 class 类就叫子类(Subclass) 被继承的类一般称为父 ...
- 3.java面向对象编程三大特性之多态
面向对象编程的三大特性:封装.继承.多态 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对类的外部而言它的内部实现细节是隐藏的,暴露给外界的只是它的实现方法. ...
- python基础学习 Day19 面向对象的三大特性之多态、封装 property的用法(1)
一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...
- python基础学习 Day19 面向对象的三大特性之多态、封装
一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...
随机推荐
- DBMS_SPACE包的使用
最近有朋友问到了DBMS_SPACE包的使用,也看了一下,大部分是关于dbms_space.space_usage的使用,space_usage这个过程的例子已经很多了,我也就不再多说了,除了这个过程 ...
- Ubuntu+XAMPP+Wordpress的安装与配置问题
Wordpress自动更新以及安装在线主题的时候需要输入FTP信息 打开/opt/lampp/htdocs/wordpress/wp-config.php文件 define('FS_METHOD',' ...
- CF D. Beautiful numbers (数位dp)
http://codeforces.com/problemset/problem/55/D Beautiful Numbers : 这个数能整除它的全部位上非零整数.问[l,r]之间的Beautifu ...
- 三星抛出万亿投资计划 布局四大科技创新领域(5G、人工智能、汽车半导体、生物技术四大新兴产业)
三星近日抛出震惊世人的投资计划,未来三年将在全球范围新增投资180万亿韩元(约1万亿元人民币).新增员工4万名.这是韩国单一企业集团大规模的投资计划. 笔者获悉,三星万亿投资计划主要分两大部分,一是在 ...
- luogu1965 转圈游戏
题目大意 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,--,依此 ...
- 用dom4j解析xml文件并执行增删改查操作
转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...
- Vue.js和Nodejs的关系
首先vue.js 是库,不是框架,不是框架,不是框架. Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据. Vue.js 的核心是一个允许你 ...
- shp系列(三)——利用C++进行DBF文件的读(打开)
1.DBF文件要点 DBF文件又叫属性文件,也叫dBASE文件,文件后缀是.dbf,实际上ArcGIS打开后的属性表就是DBF的信息.DBF文件遵循以下几个条件: 每个要素在表中必须要包含一个与之相对 ...
- python之路——二分查找算法
楔子 如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72 ...
- 大数字运算——1、BigInteger
package com.wh.BigInteger; import java.math.BigInteger; import java.util.Arrays; /** * @author 王恒 * ...