007---多态与多态性
多态与多态性
多态
- 多态:一种事物的多种形态,比如:动物有多种形态,人、狗、猫。
import abcclass Animal(metaclass=abc.ABCMeta): # 同一类事物:动物@abc.abstractmethoddef run(self):pass@abc.abstractmethoddef eat(self):passclass Person(Animal): # 动物形态之一:人def run(self):print('在走')def eat(self):print('人吃饭')class Pig(Animal): # 动物形态之一:猪def run(self):print('在跑')def eat(self):print('猪吃草')class Dog(Animal): # 动物形态之一:狗def run(self):print('在跳')def eat(self):print('小狗吃肉')class Cat(Animal): # 动物形态之一:猫def run(self):passdef eat(self):pass
多态性
- python本身就是支持多态性的。不考虑实例对象的类型,比如说python的 + ,字符串能相加。数字能相加,列表能相加。但是他们是不同的对象;还有len()。字符串有长度。列表有。元祖有,字典等都有。
- 静态多态性、动态多态性。
- 不管对象是什么类型。只要他实现了某个方法就行。
import abcclass Animal(metaclass=abc.ABCMeta):@abc.abstractmethoddef run(self):pass@abc.abstractmethoddef eat(self):passclass Person(Animal):def run(self):print('在走')def eat(self):print('人吃饭')class Pig(Animal):def run(self):print('在跑')def eat(self):print('猪吃草')class Dog(Animal):def run(self):print('在跳')def eat(self):print('小狗吃肉')class Cat(Animal):def run(self):passdef eat(self):pass
class Phone:def eat(self):print('我是手机对象,吃不得')person1 = Person()
pig1 = Pig()
dog1 = Dog()
p = Phone()# 统一的接口
def func(animal):animal.eat()func(person1)
func(pig1)
func(dog1)
func(p)
'''
人吃饭
猪吃草
小狗吃肉
我是手机对象,吃不得
'''
- 对于animal来说。它是func的一个参数,而却代表着多种形态,动物。人。猫。狗。手机。
- 为什么要使用多态性?
- 增加量程序的灵活性。以不变应万变,不论对象千变万变,使用者都是通过接口func(animal)去调用
- 增加量程序的可扩展性。新建的类Phone。只要他下面有eat方法,使用者可以完全不修改自己的代码,和动物类一样调用eat()方法。
鸭子类型
- 如果看起来像鸭子,走起来像鸭子,叫起来像鸭子,那它就是鸭子。
- 序列类型有多种形态:字符串,列表,元组,但他们直接没有直接的继承关系
# 序列类型:列表list 元祖tuple 字符串strl = list([1,2,3])
t = tuple(('a','b'))
s = str('hello python')def len(obj):return obj.__len__()print(len(l))
print(len(t))
print(len(s))
转载于:https://www.cnblogs.com/xjmlove/p/10321295.html
007---多态与多态性相关推荐
- Python类的多态和多态性
很多人喜欢将多态与多态性二者混为一谈,然后百思不得其解,其实只要分开看,就会很明朗. 一.多态 多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承) 序列数据类型有多种形态 ...
- python中对多态和多态性的理解
一.多态 多态是指一类事物有多种形态,比如动物类,可以有猫,狗,猪等等.(一个抽象类有多个子类,因而多态的概念依赖于继承) import abc class Animal(metaclass=abc. ...
- Day20:绑定方法与非绑定办法、多态和多态性
一.绑定方法与非绑定方法 类中定义的函数分成两大类: 1.绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 1. 绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定 ...
- 三大特性--多态和多态性
多态和多态性 多态 多态指的是一类事物有多种形态 多态性 什么是多态性绑定(在继承的背景下使用时,也被称为多态性) 多态性是指在不考虑实例类型的情况下使用实例 在面向对象方法中一般是这样表述多态性:向 ...
- 类的继承,派生,组合,菱形继承,多态与多态性
类的继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类 继承的特性是:子类会遗传父类的属性 继承是类与类之间的关系 为什么用继承 使用继承可以减少代码的冗余 对象的继承 python中 ...
- Python教程:多态与多态性
一.多态 Python中多态是指一类事物有多种形态.比如动物有多种形态,人,狗,猫,等等.文件有多种形态:文本文件,可执行文件. 二.多态性 1.什么是多态性? 多态性是指在不考虑实例类型的情况下使用 ...
- python面向对象:多态与多态性
多态 多态指的是一类事物有多种形态,比如 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物@abc.abs ...
- 面向对象-多态与多态性
多态:同一种事物的多种形态,比如动物有,人,狗,猪. 多态性:不考虑实例类型的情况下直接使用实例 好处: 以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal) 增加程 ...
- 面向对象(四)多态以及多态性,
多态 多态从字面意思理解就是事物的多种形态 # 动物有多种形态import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstra ...
- 面向对象的三大特性(封装、继承、多态)
继承 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class ...
最新文章
- 1.3-date命令
- 【论文阅读----DDI(1)】MUFFIN: multi-scale feature fusion for drug–drug interaction prediction
- 利用map和stringstream数据流解题
- 树莓派上安装boost库
- 《Android系统源代码情景分析》一书正在连载中
- Spring Boot实现简单的用户权限管理(超详细版)
- android怎么用别人的工程,Android导入别人的工程
- VTK:图片之ImageMandelbrotSource
- 理解统计信息(3/6):谁创建和管理统计信息?在性能调优中,统计信息的作用。...
- 如何将一个数据库中的一个表复制到另一个数据库中去
- 警告:ORA-00600 2252 错误正在SCN问题下不断爆发
- 【转】DICOM 网关的设计与实现
- php面试题做得差,php面试题,你能解决几个?
- 解决SVN Cleanup错误: Failed to run the WC DB work queue associated with
- 关于python变量使用下列说法中错误的是_关于Python中的全局变量和局部变量,以下描述中错误的是...
- windows安装 wget
- 丁二烯橡胶的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- BT源代码学习心得(四):种子文件的生成 -- 转贴自wolfenstein (NeverSayNever)
- flask+echarts地图制作心得
- 京东2019春招编程题
热门文章
- Nginx安装出现错误解决记录
- POJ读书笔记2.1 —— 鸡兔笼带
- Java自学之路(新手一定要看)
- SharePoint 2010: Claims-based Authentication
- Windows和Linux 服务器的访问方式
- 为什么我在腾讯待了近十年,还是离了职?
- 【CAIL2021】任务① | 阅读理解
- [CLS]预训练语言模型的前世今生[SEP]萌芽时代[SEP]
- leetcode—25.链表排序题目leetcode总结
- python—如何处理文件中的缺失值