多态与多态性

多态

  • 多态:一种事物的多种形态,比如:动物有多种形态,人、狗、猫。
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---多态与多态性相关推荐

  1. Python类的多态和多态性

    很多人喜欢将多态与多态性二者混为一谈,然后百思不得其解,其实只要分开看,就会很明朗. 一.多态 多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承) 序列数据类型有多种形态 ...

  2. python中对多态和多态性的理解

    一.多态 多态是指一类事物有多种形态,比如动物类,可以有猫,狗,猪等等.(一个抽象类有多个子类,因而多态的概念依赖于继承) import abc class Animal(metaclass=abc. ...

  3. Day20:绑定方法与非绑定办法、多态和多态性

    一.绑定方法与非绑定方法 类中定义的函数分成两大类: 1.绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 1. 绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定 ...

  4. 三大特性--多态和多态性

    多态和多态性 多态 多态指的是一类事物有多种形态 多态性 什么是多态性绑定(在继承的背景下使用时,也被称为多态性) 多态性是指在不考虑实例类型的情况下使用实例 在面向对象方法中一般是这样表述多态性:向 ...

  5. 类的继承,派生,组合,菱形继承,多态与多态性

    类的继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类 继承的特性是:子类会遗传父类的属性 继承是类与类之间的关系 为什么用继承 使用继承可以减少代码的冗余 对象的继承 python中 ...

  6. Python教程:多态与多态性

    一.多态 Python中多态是指一类事物有多种形态.比如动物有多种形态,人,狗,猫,等等.文件有多种形态:文本文件,可执行文件. 二.多态性 1.什么是多态性? 多态性是指在不考虑实例类型的情况下使用 ...

  7. python面向对象:多态与多态性

    多态 多态指的是一类事物有多种形态,比如 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物@abc.abs ...

  8. 面向对象-多态与多态性

    多态:同一种事物的多种形态,比如动物有,人,狗,猪. 多态性:不考虑实例类型的情况下直接使用实例 好处: 以不变应万变,不论对象千变万化,使用者都是同一种形式去调用,如func(animal) 增加程 ...

  9. 面向对象(四)多态以及多态性,

    多态 多态从字面意思理解就是事物的多种形态 # 动物有多种形态import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstra ...

  10. 面向对象的三大特性(封装、继承、多态)

    继承 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class ...

最新文章

  1. 1.3-date命令
  2. 【论文阅读----DDI(1)】MUFFIN: multi-scale feature fusion for drug–drug interaction prediction
  3. 利用map和stringstream数据流解题
  4. 树莓派上安装boost库
  5. 《Android系统源代码情景分析》一书正在连载中
  6. Spring Boot实现简单的用户权限管理(超详细版)
  7. android怎么用别人的工程,Android导入别人的工程
  8. VTK:图片之ImageMandelbrotSource
  9. 理解统计信息(3/6):谁创建和管理统计信息?在性能调优中,统计信息的作用。...
  10. 如何将一个数据库中的一个表复制到另一个数据库中去
  11. 警告:ORA-00600 2252 错误正在SCN问题下不断爆发
  12. 【转】DICOM 网关的设计与实现
  13. php面试题做得差,php面试题,你能解决几个?
  14. 解决SVN Cleanup错误: Failed to run the WC DB work queue associated with
  15. 关于python变量使用下列说法中错误的是_关于Python中的全局变量和局部变量,以下描述中错误的是...
  16. windows安装 wget
  17. 丁二烯橡胶的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  18. BT源代码学习心得(四):种子文件的生成 -- 转贴自wolfenstein (NeverSayNever)
  19. flask+echarts地图制作心得
  20. 京东2019春招编程题

热门文章

  1. Nginx安装出现错误解决记录
  2. POJ读书笔记2.1 —— 鸡兔笼带
  3. Java自学之路(新手一定要看)
  4. SharePoint 2010: Claims-based Authentication
  5. Windows和Linux 服务器的访问方式
  6. 为什么我在腾讯待了近十年,还是离了职?
  7. 【CAIL2021】任务① | 阅读理解
  8. [CLS]预训练语言模型的前世今生[SEP]萌芽时代[SEP]
  9. leetcode—25.链表排序题目leetcode总结
  10. python—如何处理文件中的缺失值