python中的鸭子类型

2023-05-16

浅层理解

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

深层理解

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

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

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

python的鸭子类型

  • python中的鸭子类型推崇的与其他编程语言有大不同
    • python中的鸭子类型:不需要显示的继承某个类,只要我的类中有run和speak方法,我就是鸭子这个类

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

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

python如何解决问题

  • 方式一:abc模块,装饰后,必须重写方法,不重写就报错
  • 方式二:drf源码中使用的:父类中写这个方法,但没有具体实现,直接抛异常
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中的鸭子类型 的相关文章

随机推荐

  • Redis教程总结

    Redis redis 时间轮 夜猫吃夜宵的博客 CSDN博客 一 Redis特性 快 为什么快 xff1f 基于内存操作 xff0c 操作不需要跟磁盘交互 本身就是k v结构 xff0c 类似hashMap xff0c 所以查询速度接近O
  • Shiro和Spring Security对比(3)

    https www cnblogs com hanease p 15906339 html 1 两个基本的概念 安全实体 xff1a 系统需要保护的具体对象数据权限 xff1a 系统相关的功能操作 xff0c 例如基本的CRUD 1 2 S
  • springboot整合邮箱功能一(实战)

    背景介绍 邮件发送其实是一个非常常见的需求 xff0c 用户注册 xff0c 找回密码 校验码等地方 如果使用短信还需缴费 这里发送者邮箱选用了163邮箱 1 pom xml文件的引用 lt xml version 61 34 1 0 34
  • Apache Camel简介

    Apache Camel简介 abinge89的博客 CSDN博客 1 什么是Camel 1 1 来源 Camel项目开始于2007年初 xff0c 虽然年轻 xff0c 但它已经是一个成熟的开源项目 xff0c 基于自由的Apache 2
  • springboot整合邮箱功能二(普通邮件, html邮件, thymleaf邮件)

    SpringBoot整合Email发送邮件 空 白 xfffd 的博客 CSDN博客 https www cnblogs com erlou96 p 16878192 html label1 5 1 准备工作 1 1 qq邮箱设置 本文默认
  • MySQL中Truncate用法详解

    MySQL中Truncate用法详解 Mysql 脚本之家 前言 xff1a 当我们想要清空某张表时 xff0c 往往会使用truncate语句 大多时候我们只关心能否满足需求 xff0c 而不去想这类语句的使用场景及注意事项 本篇文章主要
  • cesium 移除实体方法

    问题 xff1a cesium 移除entity 后 xff0c viewer entities values没有任何entity时 xff0c 图层上还会显示 解决方法 xff1a 无效方法 1 模拟代码 viewer entities
  • 时间轮算法在Netty和Kafka中的应用

    1 时间轮算法 时间轮算法 xff08 Time Wheel Algorithm xff09 是一种高效的定时器实现方式 xff0c 主要用于高并发下的定时任务调度 它利用了循环数组的思想 xff0c 将时间轴分成一个一个的时间槽 xff0
  • RabbitMQ事务概述

    RabbitMQ支持事务 transaction xff0c RabbitMQ中与事务机制有关的方法有三个 xff1a txSelect txCommit 以及txRollback xff08 1 xff09 txSelect用于将当前ch
  • 消息队列原理和应用场景简介

    一 消息队列的场景 异步处理流量控制服务解耦发布订阅高并发缓冲 1 1 异步处理 主要场景 xff1a 短信通知 终端状态推送 App推送 用户注册等 秒杀系统为例 更快速返回结果 xff1b 减少等待 xff0c 实现并发处理 xff0c
  • 消息队列-ZeroMQ

    一 吞吐量和延时性 二 ZeroMQ解决传统网络编程的问题 调用的socket接口较多 xff1b TCP是一对一的连接 xff1b 一对多 xff0c reactor模式编程需要关注很多socket细节问题 xff1b 不支持跨平台编程
  • SpringSecurity登录原理(源码级讲解

    SpringSecurity登录原理 xff08 源码级讲解 xff09 简书 一 简述 首先会进入UsernamePasswordAuthenticationFilter并且设置权限为null和是否授权为false xff0c 然后进入P
  • Spring Security生命周期简述

    Spring Security系列 Spring Security生命周期之起源 springsecurity生命周期 马各马它的博客 CSDN博客 Spring Security系列 Spring Security生命周期之诞生 spri
  • @Import注解详解

    64 Import注解详解 中年危机的老男人的博客 CSDN博客 一 64 Import注解提供了三种用法 64 Import一个普通类 spring会将该类加载到spring容器中 64 Import一个类 xff0c 该类实现了Impo
  • Spring Security简单身份认证配置(thymleaf,密码加密,JDBC,LDAP)

    Spring Security系列 Spring Security简单身份认证配置 二 websecurityconfig login post 马各马它的博客 CSDN博客 一 认证 登录 流程 引用spring boot starter
  • 系统编程__2__父子进程的创建和回收

    系统编程 这里写的是对于小白来说更多的了解系统编程的文章 xff0c 有写的不对的地方还恳请各位大佬指出错误 xff0c 小编一定会多多采纳 手动多谢 那么 xff0c 上一次我们稍微了解了一下关于系统编程的一些主要内容 没有看到的童鞋还请
  • MobaXterm工具

    1 登录 1 1 远程登录 1 1 1 内建命令行模式 1 点击图标 xff0c 在弹出的窗口中选择SSH连接 xff0c 然后填入Remote host IP及用户名 2 点击确认后输入密码即可 1 1 2 Gnome模式 类似VNC 1
  • window bat cmd 获取cpu 利用率(使用率) 方式收集

    window bat cmd 获取cpu 利用率 使用率 跟 性能计数器一致 xff0c 方式收集 1 typeperf 1秒一输出 typeperf 34 processor total processor time 34 若是只要执行一
  • pytesseract提取识别图片中的文字

    目录 1 获取tesseract版本号 2 获取语言包列表 3 识别图片中的文字 4 获取图片中文字的详细信息 5 识别图片中的文字和位置 6 识别osd信息 7 识别并生成xml文件 避坑指南 xff1a pytesseract是对Tes
  • python中的鸭子类型

    浅层理解 走路像鸭子 xff0c 说话像鸭子 xff0c 它就是鸭子 深层理解 指的是面向对中 xff0c 子类不需要显示的继承某个类 xff0c 只要有某个的方法和属性 xff0c 那我就属于这个类 编程语言中的鸭子类型说明 假设有个鸭子