[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 ...
随机推荐
- require() 方法讲解
require.config({ paths:{ "jquery":"jquery.min", "underscore":"und ...
- 【RF库测试】关键字get time
*** Test Cases ***Timestamp ${time} GET TIME ${secs} GET TIME epoch ${year} GET TIME return year ${y ...
- HTML 解析
xml,json都有大量的库来解析,我们如何解析html呢? TFHpple是一个小型的封装,可以用来解析html,它是对libxml的封装,语法是xpath.今天我看到一个直接用libxml来解析h ...
- 《C++ Primer Plus》第9章 内存模型和名称空间 学习笔记
C++鼓励程序员在开发程序时使用多个文件.一种有效的组织策略是,使用头文件来定义用户类型,为操纵用户类型的函数提供函数原型,并将函数定义放在一个独立的源代码文件中.头文件和源代码文件一起定义和实现了用 ...
- cocos2dx游戏--欢欢英雄传说--添加血条
用一个空血槽图片的Sprite做背景,上面放一个ProgressTimer, 通过设置ProgressTimer的进度来控制血条的长短.建立一个Progress类来实现.Progress.h: #if ...
- java基础---->摘要算法的介绍
数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名.数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密.数据摘要算法也被称为哈希(Hash)算法. ...
- 原创Java多线程详解(一)
只看书不实践是不行的.来实践一下~~~~~~(引用请指明来源) 先看看百科对多线程的介绍 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的 ...
- Android 7.1 SystemUI--Multi-Window多窗口模式
PhoneStatusBar.java private View.OnLongClickListener mRecentsLongClickListener = new View.OnLongClic ...
- c# SQL Server数据库操作-管理命令参数的类:SqlParameter
使用SqlCommand类来执行Transact-SQL语句或存储过程时,有时需要用参数传值或作为返回值,SqlParameter类正是为了此需要而设计的类.下面介绍如何使用该类为SqlCommand ...
- Android 通过Socket 和服务器通讯
Extends:(http://www.cnblogs.com/likwo/p/3641135.html) Android 通过Socket 和服务器通讯,是一种比较常用的通讯方式,时间比较紧,说下大 ...