Duck typing

Duck typing:是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定。在 Duck typing中,关注的不是对象的类型本身,而是它是如何使用的。

Duck typing在Python中被广泛使用。下面是Duck typing的一个典型例子:

class Duck:
    def quack(self): 
        print("Quaaaaaack!")
    def feathers(self): 
        print("The duck has white and gray feathers.")
 
class Person:
    def quack(self):
        print("The person imitates a duck.")
    def feathers(self): 
        print("The person takes a feather from the ground and shows it.")

def in_the_forest(duck):
    try:
        duck.quack()
        duck.feathers()
    except(AttributeError, TypeError):
        print("{} can't quack() or feathers()".format(duck))
 
def game():
    donald = Duck()
    john = Person()
    in_the_forest(donald)
    in_the_forest(john)
    in_the_forest("nelson")
 
if __name__ == '__main__':
    game()

 Duck typing在不使用继承的情况下使用了多态,具有强可伸缩性。

但如果调用的方法不存在,那么将引发一个运行时错误。通常倾向于用异常处理来处理。异常可以简单地添加到包裹它的代码,并不需要影响更多的代码的逻辑,从而避开复杂的检测和错误检查逻辑。

Duck typing常常被引用的一个批评是:它要求程序员在任何时候都必须很好地理解他/她正在编写的代码。

 

新手必看:如何用Python模拟电动助力转向系统(EPS)的传感器信号处理 本文详细介绍了如何使用Python模拟电动助力转向系统(EPS)的传感器信号处理流程,包括转向力矩、转向角度和车速信号的生成与滤波处理。通过实战代码示例,帮助开发者理解ECU如何计算助力扭矩,并提供了可视化分析和性能优化建议,适合汽车电子系统开发新手学习。 阅读详情

相关推荐

Kali Linux实战:5分钟复现永恒之蓝漏洞攻击(附Win7靶机配置指南)

本文提供了一份详细的Kali Linux实战指南,指导读者在5分钟内于隔离的虚拟环境中复现经典的永恒之蓝漏洞攻击。内容涵盖从Windows 7靶机配置、网络设置,到使用Nmap进行服务发现、利用Metasploit框架进行漏洞扫描与利用的全过程,并演示了基础的Meterpreter后渗透操作,旨在帮助网络安全学习者通过亲手实践深入理解SMB协议漏洞的攻防原理。

weixin_29313547的博客 198

12、go语言的duck typing

学习目标: 提示:这里可以添加学习目标 例如:一周掌握 Java 入门知识 学习内容: 提示:这里可以添加要学的内容 例如: 1、 搭建 Java 开发环境 2、 掌握 Java 基本语法 3、 掌握条件语句 4、 掌握循环语句 学习时间: 提示:这里可以添加计划学习的时间 例如: 1、 周一至周五晚上 7 点—晚上9点 2、 周六上午 9 点-上午 11 点 3、 周日下午 3 点-下午 6 点 学习产出: 提示:这里统计学习计划的总量 例如: 1、 技术笔记 2 遍 2、优快云 技术博客 3 篇

weixin_36020178的博客 768

安卓 实现灯光闪过效果

有个小需求,给按钮加一个灯光划过的效果,这样的需求一般有UI,肯定就找UI了要个gif图不就完事了,可是这次没有,好久自己做一个嘛。Web端的大佬实现很快,到安卓这边呢,百度一搜发现诶?怎么没有,好吧自己来一个 一切动效相关的不给图看都是耍流氓 所以俺不能这么干啊,OK!直接上效果图,再来解释下怎么实现的 效果就是这样子,怎么实现呢? 从图分析下,就是一个光写着重左边移动要右边循环嘛,这有啥难的?? 来看一看我的第一版,第二版 这是个什么?????一点都不像啊? 赶紧再问了问Web端大佬,噢,加了一个

SummerCloudXT的博客 1378

duck typing java_Duck typing

第一次了解到这个词汇是我在知乎提了一个问题,知乎传送地址。vczh在答案中提到了duck type,于是google了一番,大概了解了一下,附上wiki地址。在面向对象的编程语言中,所谓的duck type是指:对象的属性和方法决定了类的语义,而不是它的继承关系或者是它实现了某个接口。这个概念最早是由James Whitcomb Riley提出的,下面这句话可以帮助我们理解:When I see ...

weixin_34455676的博客 214

Office LTSC 2021/2024专业部署:ODT+config.xml标准化实战

Office部署本质上是企业终端软件生命周期管理的关键环节,其核心原理在于通过声明式配置驱动安装、激活与组件裁剪。Office Deployment Tool(ODT)作为微软官方命令行引擎,配合config.xml这一DSL契约文件,实现可版本控制、可审计、可回滚的自动化交付。该方案技术价值突出体现在稳定性保障(如LTSC长期支持通道)、合规性强化(不绕过授权机制)及运维提效(批量部署、离线支持)。典型应用场景覆盖教育机房批量装机、政企终端标准化、医疗HIS工作站部署等对功能冻结与系统确定性要求严苛的环境

diaocuiguo2493的博客 561

普中科技ESP8266-01s模块CWJAP:3 FAIL报错?手把手教你用AT+CWSAP指令搞定WiFi配置

本文详细解析了普中科技ESP8266-01s模块常见的CWJAP:3 FAIL报错问题,并提供了通过AT+CWSAP指令正确配置WiFi的实战解决方案。文章涵盖错误根源分析、硬件连接指南、AT指令详解及高级调试技巧,帮助开发者快速解决ESP8266-01s模块的WiFi配置难题。

weixin_42653691的博客 202

C++泛型与多态(4):Duck Typing

Duck Typing

墨1024 1176

2025东三省D题深圳杯数学建模实战解析:基于多模型融合的法医STR混合样本智能识别系统

本文深入解析了2025年东三省数学建模竞赛D题,即深圳杯赛题,聚焦于法医STR混合样本的智能识别挑战。文章系统阐述了构建一个基于多模型融合的智能识别系统的完整流程,涵盖贡献者人数判定、DNA贡献比例估计、个体基因型推断以及STR谱图去噪四大核心步骤。通过融合高斯混合模型、随机森林、非负矩阵分解、小波变换与深度学习等多种技术,并强调特征工程的重要性,为破解法医DNA混合样本分析这一行业难题提供了清晰的数学建模与AI实战思路。

weixin_29050271的博客 392

golang 与 duck typing

原文:http://floss.zoomquiet.io/data/20120904000006/index.html 什么是 duck typing? 在面向对象的编程语言中,当某个地方(比如某个函数的参数)需要符合某个条件的变量(比如要求这个变量实现了某种方法)时,什么是判断这个变量是否“符合条件”的标准? 如果某种语言在这种情况下的标准是: 这个变量的类型是否实

我的奋斗 4212

基于VisionMaster实现数据实时存储至MySQL (二)

摘要:之前的分享主要聚焦于简单的一维数据实时存储。但在做缺陷检测项目时,情况往往更加复杂:一张检测图像中可能同时存在多个缺陷,每个缺陷都有一组独立的核心参数(如质心、长短轴、面积等)。如何在 MySQL 中记录这些成组出现的缺陷数据,而不只是简单的单条记录?

haier123888的博客 226

网络速度的极致:800G & 1.6T 以太网的突破!

你好,这里是网络技术联盟站。在我们进入数据驱动的世界时,以太网的重要性日益突出。从根本上说,以太网是一种连接计算机的技术,旨在形成一个本地网,通过它,设备可以与其他设备进行通信。然而,随着时间的推移,以太网已经发展成为一种全球的数据通信系统,其速度从初始的10Mbit/s发展到现在的800G,甚至1.6T。这种巨大的进步并不是没有挑战的,但每一次的突破都代表了技术的巨大飞跃。本文将探讨800G和1.6T以太网的创新与挑战。

网络技术联盟站 1773

C++模板:编译时模拟Duck Typing

return p?class foopublic:class barpublic:OK, nice!allclass foopublic:class barpublic:This:do noclass foopublic:class bazpublic:......public:m_o(o)private:public:

tumu_C的博客 1042

【S32K3 MCAL配置】-4.1-CAN Driver:如何解决CAN帧发送丢帧问题

【S32K3 MCAL配置】-4.1-CAN Driver:如何解决CAN帧发送丢帧问题

「汽车电子助手」的博客 1442

学习go语言里Duck typing 概念

最近学习go语言 ,了解到了duck typing 这个概念。 原意为: “如果一个物体,它长得像“”鸭子”,叫起来像鸭子” 那么我就认为它是鸭子。 觉得这个不太好理解 自己举几个例子: 鸭子 通常定义为“形体为黄色,会浮在水面叫声为嘎嘎嘎的家禽” 但是“我”(假设我是小孩子)不这么认为,我认为 大黄鸭就是鸭子,它是黄色的,可以漂浮,会嘎嘎的叫。 再比如“我”(假设我是个小公举)我认为 “玻...

weixin_41099342的博客 1062

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Python】浅谈 鸭子类型 (Duck Typing)

鸭子类型

闻韶 4764

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

duck java_编程语言中的 DUCK TYPING

如果一只动物走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只动物就可以被称为鸭子。许多编程语言都支持 Duck Typing ,通常 Duck Typing 是动态编程语言用来实现多态的一种方式。在理解 Duck Typing 前,先看一张图片,这是曾经一度很火的大黄鸭先问一个比较考三观的问题:图片中的大黄鸭,它是不是一只鸭子呢?这个问题,得看你从哪个角度去看,如果从人们常识的认知中的角度去...

weixin_39847034的博客 275

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

编程语言中的鸭子类型 Duck Typing

来源 |https://segmentfault.com/a/11900000196072401、什么是鸭子类型(duck typing)百度百科是这样解释的:这是程序设计中的一种类型...

web前端开发 2317

C#动静结合编程之三:Duck Typing

中庸 C#是静态类型语言,要使用类型必须引用该类型的定义。因此,从软件组织角度会发生组件间的引用依赖关系。常见的引用依赖关系有两种模式: a. 正向依赖:组件A用到了组件B中定义的类T,组件A直接引用组件B,依赖关系是“组件A -> 组件B”。 b. 反向依赖:组件A通过接口I定义功能规范,针对抽象编程;组件B反过来引用组件A,并定义类T实现接口I;由另一组件C将I与T粘合起来,依赖关...

weixin_34221073的博客 295

Duck Typing与协议 vs. 继承

在ruby-core邮件列表中,一个关于Ruby中动态类型的问题引发了一系列讨论: \根据irb中的运行结果:\u0026gt;\u0026gt; StringIO.is_a?(IO)\u0026gt;\u0026gt; =\u0026gt;false对我来说,这看起来不合逻辑。是有意而为之吗?如果是的话,为什么? \有一种答案是这样的: \因为StringIO没有使用IO作为它的基类实现,所以它...

cpongo5 123

5-1 duck typing的概念

INGNIGHT的专栏 281

Golang duck typing(鸭子类型)的概念

“像鸭子走路,像鸭子叫(长得像鸭子),那么就是鸭子” 描述事物的外部行为而非内部结构 严格说go属于结构化类型系统,类似dock typing 先看一个其他语言中的duck typing : python中的duck typing def download(retriever): return retriever.get("www.fabric.com") 运行时才知道传入...

qq_37858332的博客 3268

一步一步学习TypeScript(05.Duck Typing)

关于Duck Typing在维基上的说明 使用ts的实现class Duck{ quack(){ console.log('呱呱呱'); } feathers(){ console.log('是一个有灰色的羽毛的鸭子'); } }class Person{ quack(){ console.log('这个人在模仿

weiqi的博客 1089

面向对象的 duck-typing

一、概念理解 1、面向对象有几个特征:封装、抽象、继承、多态。 2、多态概念: 理解时的概念:“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子”, 比较官方的概念:只要两个类具有相同的方法,就可以实现多态,并不要求两个类之间有任何关系,这就是所谓的 duck-typing。 3、多态的目的:提高代码的扩展性和可复用性。 4、实现多态有几种办法:通过继承重写、通过接口类传值方式、语言特性的 duck-typing. 二、例子 最近在看Go,着重记录一下 Go 的多态。

foolint的博客 256

编程语言中的 DUCK TYPING|python、c++、java、go

如果一只动物走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只动物就可以被称为鸭子。 许多编程语言都支持 Duck Typing ,通常 Duck Typing 是动态编程语言用来实现多态的一种方式。 在理解 Duck Typing 前,先看一张图片,这是曾经一度很火的大黄鸭 先问一个比较考三观的问题:图片中的大黄鸭,它是不是一只鸭子呢? 这个问题,得看你从哪个角度去看,如果从人们常识的...

用途:中英文学习笔记,如有侵权,可评论留言,及时清理;学历:NUS计算机硕士;SYSU地球物理学士 906

【编程语言】Duck Typing

“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子” 在很多动态语言中,不同类之间,只要类的字段和方法结构一致,就能自动转换 比如以下代码: class Duck: def quack(self): print "Quaaaaaack!" class Bird: def quack(self): print "...

天天向上 Up Up Up (*^▽^*) 669
上一篇: Windows环境SSH中文显示乱码解决方法
下一篇: Python module的重新加载
ruby_beginner
博客等级 码龄21年 9粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值