[py]多态的理解
多态
不同的数据类型,执行相同的方法,产生的状态不同
不同对象调用相同的方法(运行时候的绑定状态)
#!/usr/bin/env python
# coding=utf-8
class H2O:
def __init__(self, name, temp):
self.name = name
self.temp = temp
def show(self):
if self.temp < 0:
print("%s 温度为: %s" % (self.name, self.temp))
elif 0 < self.temp < 100:
print("%s 温度为: %s" % (self.name, self.temp))
elif self.temp > 100:
print("%s 温度为: %s" % (self.name, self.temp))
class Ice(H2O):
pass
class Water(H2O):
pass
class Stream(H2O):
pass
w1 = Ice("冰", -10)
w2 = Water("水", 25)
w3 = Stream("气", 102)
w1.show()
w2.show()
w3.show()
系统的多态体现
str和list都是type类,有共同的父类,都是执行父类的方法,只不过执行时候状态不同.
>>> s="abc"
>>> l=[1,2,3]
>>> s.__len__()
3
>>> l.__len__()
3
>>>
>>> len(l) ## 调用__len__方法
3
>>>
模仿系统len()
#!/usr/bin/env python
# coding=utf-8
class H2O:
def __init__(self, name, temp):
self.name = name
self.temp = temp
def show(self):
if self.temp < 0:
print("%s 温度为: %s" % (self.name, self.temp))
elif 0 < self.temp < 100:
print("%s 温度为: %s" % (self.name, self.temp))
elif self.temp > 100:
print("%s 温度为: %s" % (self.name, self.temp))
class Ice(H2O):
pass
class Water(H2O):
pass
class Stream(H2O):
pass
w1 = Ice("冰", -10)
w2 = Water("水", 25)
w3 = Stream("气", 102)
## 方法1
w1.show()
w2.show()
w3.show()
## 方法2: 提供统一api, 类似len(l)
def func(obj):
obj.show()
func(w1)
func(w2)
func(w3)
[py]多态的理解的更多相关文章
- python中对多态的理解
目录 python中对多态的理解 一.多态 二.多态性 三.鸭子类型 python中对多态的理解 一.多态 多态是指一类事物有多种形态,比如动物类,可以有猫,狗,猪等等.(一个抽象类有多个子类,因而多 ...
- Java中的继承、封装、多态的理解
Java中的继承.封装.多态 继承的理解: 1.继承是面向对象的三大特征之一,也是实现代码复用的重要手段.Java的继承具有单继承的特点,每个子类只有一个直接父类. 2.Java的继承通过extend ...
- 对C#继承、多态的理解
11月3日 阴天 前两天看某位大牛写的程序,对于C#多态有困惑,今天一大早来查阅了不少资料,自认为有了一个基本的认知,记录下来,一扫今天这阴霾的天气 ------------------------- ...
- 谈谈我对C# 多态的理解
面向对象三要素:封装.继承.多态. 封装和继承,这两个比较好理解,但要理解多态的话,可就稍微有点难度了.今天,我们就来讲讲多态的理解. 我们应该经常会看到面试题目:请谈谈对多态的理解. 其实呢,多态非 ...
- java多态的理解
面向对象语言中的类有三个特征,封装.继承.多态.封装与继承很好理解,那什么是多态呢? 1.什么是多态? 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同 ...
- 关于java中多态的理解
java三大特性:封装,继承,多态. 多态是java的非常重要的一个特性: 那么问题来了:什么是多态呢? 定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行 ...
- JAVA面向对象-多态的理解
面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据. 继承是为了重用父类代码,同时为实现多态性作准备.那么什么是多 ...
- PHP多态的理解
多态性的一般定义为:同一个操作作用于不同的类的实例,将产生不同的执行结果.也即不同类的对象收到相同的消息时,将得到不同的结果.在实际的应用开发中,采用面向对象中的多态主要在于可以将不同的子类对象都当作 ...
- java8-3 多态的好处和弊端以及多态的理解
多态的好处: A:提高了代码的维护性(继承保证) B:提高了代码的扩展性(由多态保证) 猫狗案例代码 class Animal { public void eat(){ System.out.prin ...
随机推荐
- 记录下自己常用的全框架HTML代码
纯粹记录下,没有任何意义. 也不推荐使用 <frameset rows="> <frame src=" name="topFrame" scr ...
- HTML&CSS精选笔记_HTML入门
HTML入门 什么是HTML HTML基本文档格式 HTML文档的基本格式,其中主要包括<!DOCTYPE>文档类型声明.<html>根标记.<head>头部标记. ...
- sqlmap tutorial
svn checkout https://svn.sqlmap.org/sqlmap/trunk/sqlmap sqlmap-dev sqlmap.py -u "http://www.isl ...
- C#中的方法,方法的重载,以及几个关键字
嘿嘿,今天来的早点啦,主要有问题解决不了,希望看到的亲们知道怎么整的给我说下,先谢谢哦:-D <一>首先复习了三元表达式:即 表达式1,表达式2,表达式3: 举例: bool resul ...
- win10下安装Oracle 11g 32位客户端遇到INS-13001环境不满足最低要求
在以管理员身份运行setup.exe之后,出现了:[INS-13001]环境不满足最低要求,通过网上搜索之后找到了解决途径 首先,打开你的解压后的database文件夹,找到stage,然后cvu,找 ...
- LLDB调试器
你是否曾经苦恼于理解你的代码,而去尝试打印一个变量的值? NSLog(@"%@", whatIsInsideThisThing); 或者跳过一个函数调用来简化程序的行为? NSNu ...
- php 数据库练习之租房子
题目: 示例图 本次只做图4这个表,因为之前的都已做过 自己在mydb数据库建了一个house表 如图: 自己做的代码: <!DOCTYPE html PUBLIC "-//W3C// ...
- 【Linux】WinSCP普通用户登录sftp后切换到root权限
工具: Xshell winscp 服务器环境: linux centos7 背景:普通用户使用winscp账户登录服务器,没有操作权限 1 普通用户,通过Xshell登录服务器.输入以下命令, ...
- vux 局部注册组件
在home.vue里面,引入Prop.vue组件: 其中 <child :message="msg"></child>的时候 是这么赋值的: data () ...
- HTML的特殊字符-图标对应表
本文摘自:http://www.cnblogs.com/web-d/archive/2010/04/16/1713298.html HTML特殊字符编码大全:往网页中输入特殊字符,需在html代码 ...