浅层理解

  • 走路像鸭子,说话像鸭子,它就是鸭子

深层理解

  • 指的是面向对中,子类不需要显示的继承某个类,只要有某个的方法和属性,那我就属于这个类

编程语言中的鸭子类型说明

    1. 假设有个鸭子类Duck类,有两个方法,run,speak方法
    1. 假设又有一个普通鸭子类,PDuck,如果它也是鸭子,它需要继承Duck类,
    • 只要继承了鸭子类,什么都不需要写,普通鸭子类的对象就是鸭子这种类型;
    • 如果不继承,普通鸭子类的对象就不是鸭子这种类型
    1. 假设又有一个唐老鸭子类,TDuck,如果它也是鸭子,它需要继承Duck类,

      • 只要继承了鸭子类,什么都不需要写,唐老鸭子类的对象就是鸭子这种类型;
      • 如果不继承,唐老鸭子类的对象就不是鸭子这种类型

python的鸭子类型

  • python中的鸭子类型推崇的与其他编程语言有大不同

    • python中的鸭子类型:不需要显示的继承某个类,只要我的类中有run和speak方法,我就是鸭子这个类

python中的鸭子类型存在的小问题

  • 如果使用python鸭子类型的写法,如果方法写错了,它就不是这个类型了,会有问题

python如何解决问题

  • 方式一:abc模块,装饰后,必须重写方法,不重写就报错
  • 方式二:drf源码中使用的:父类中写这个方法,但没有具体实现,直接抛异常

python中的鸭子类型相关推荐

  1. Python学习笔记——鸭子类型(duck typing)

    前言 在实习期间,由于工作需要首次接触了Python这门语言,由于学习和使用的时间非常短,所以当时认为,作为一门解释性语言,在做Web开发方面,Python和PHP的差别不大,甚至在一些应用场景上没有 ...

  2. Python 语言中的 “鸭子类型”

    Python 语言中的 "鸭子类型" 继承 多态 鸭子类型 不要检查它是不是鸭子.它的叫声像不像鸭子.它的走路姿势像不像鸭子,等等.具体检查什么取决于你想使用语言的哪些行为.(co ...

  3. Python多态、鸭子类型

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

  4. Python中的“鸭子形态”,浅谈一下

    一.鸭子形态来源 首先在初接触Python就应该知道的,Python是弱类型编程语言 因此,Python中不支持多态,也用不到多态,多态的概念是应⽤于java和C#这些强类型语⾔中的,但是Python ...

  5. python中的鸭子模型

    python中没有多态,也用不着多态,python崇尚"鸭子模型" 在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格.在这种风格中,一个对象有效的语义,不 ...

  6. 你知道什么是Python里的鸭子类型和猴子补丁吗?

    作者 |  梁云1991 来源 | Python与算法之美(ID:Python_Ai_Road) 有时候我们会听到Python里所谓的鸭子类型和猴子补丁的说法,乍一听还以为是来到了动物园,Python ...

  7. java 鸭子类_Java中实现鸭子类型机制

    "当看到一只鸟走起来像鸭子.游泳起来像鸭子.叫起来也像鸭子,那么这只鸟就可以被称为鸭子."[引用维基] 一般而言,鸭子类型机制常见/用于动态语言,如Python.Ruby.JS.来 ...

  8. Python 中的序列类型支持哪些公共操作

    一.序列类型支持哪些公共操作 Python 中的序列类型分为:可变序列和不可变序列,都支持我们序列类型的所有操作 可变序列:列表 不可变序列:字符串和元祖 1.支持通过数字索引取值 a = (&quo ...

  9. python中的数字类型格式与运算_Python中的数字类型格式与运算

    出品 Python中的数字(Digital)与数学中的数字相同,可以通过各种各样的运算符实现各种计算,在Python中数字类型的数据格式分为以下几种: 1.整数型(integer) 2.浮点数(flo ...

最新文章

  1. 怎样预训练GNN能实现更好的迁移效果?
  2. SAP零售业解决方案
  3. ajax核心代码提交,ajax表单在Asp.net核心提交后的RedirectToAction
  4. 3梅林刷官改变砖_陶瓷透水砖的四大明显优势
  5. Linux下三大最佳的开源视频播放器
  6. hadoop 文本统计一个字符的个数_使用hadoop统计多个文本中每个单词数目
  7. win7系统如何取消自动开机
  8. 计算机网络之应用层:2、DNS域名解析系统
  9. EditText 双击才能获取点击事件
  10. django - settings.py
  11. linux jar运行监控 mo,linux系统监控利器--monit
  12. 实例--[QSerialPort]串口通信_vortex_新浪博客
  13. Axure RP 10 安装方法
  14. 博弈论概述 (转自百度百科)
  15. Firefox 中文语言包安装方法
  16. 教你玩转私域流量+会员运营体系
  17. 数据库服务:数据库表空间扩容
  18. 云原生微服务架构实战精讲第三节 示例用户场景分析和领域驱动DDD
  19. Error starting userland proxy: listen tcp 0.0.0.0:xxx端口: bind: address already in use解决办法
  20. HDU-4126(Genghis Khan the Conqueror)

热门文章

  1. 长租公寓大数据|2019年中国长租公寓行业发展分析报告
  2. CSS 之 posiiton:fixed 固定定位在父元素含有 tranform 属性时会失效,变成 absolute 的效果
  3. vim 系列文章 - 001 vim及neovim编译安装(文末有福利)
  4. NetSuite:一个页面简单功能齐全的软件
  5. 一般一个电脑有几个网卡,分别是什么网卡
  6. 《计算机应用基础》教案,《计算机应用基础》—— excel教案
  7. ArcGIS中的Datepart函数使用方法
  8. insert into 优化测试
  9. 21日《家校合力,共育成长》直播课笔记
  10. Matlab绘图总结1