Duck typing

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

Duck typingPython中被广泛使用。下面是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常常被引用的一个批评是它要求程序员在任何时候都必须很好地理解他/她正在编写的代码。

 

DEM数据下载,拼接,裁剪 目录: 1、数字高程模型(DEM)的数据下载 2、在ENVI里面进行拼接,生成SARscape标准格式的DEM数据3、在ArcGIS里面安装已有的矢量范文,进行掩膜裁剪 4、注意事项 数字高程模型的数据下载: 网址:http://dwtkns.com/srtm30m/ 1.对研究区域进行经纬度选择,然后进行选择下载即可 2.下载的数据是.hgt格式的,按照不同的需求进行转换,这里我是用于ENVI处理,且下载了四个,所有进行了拼接,拼接、格式转换如下 注:可能有时候需要登陆注册,点击下... 阅读详情

相关推荐

Unity UGUI深度优化

Unity UGUI优化相关

不定时分享所学所得,包括游戏开发和其他收获! 2690

12、go语言的duck typing

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

weixin_36020178的博客 764

【面试系列】软件架构师 高频面试题及详细解答

本文介绍了软件架构师岗位的初级、中级和高级面试题及详细解答,涵盖了系统设计、面向对象设计、分布式系统、云计算技术、性能优化等关键领域。通过这些问题和解答,候选人可以深入理解软件架构师的核心职责和技能要求。此外,文章总结了在面试中需要掌握的常考知识点,包括架构模式、分布式系统管理、安全性、数据管理和DevOps实践。通过掌握这些知识点,软件架构师能够有效设计和指导复杂系统的结构,确保系统的可扩展性、性能和维护性。

在路上的专栏 825

duck typing java_Duck typing

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

weixin_34455676的博客 213

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

Duck Typing

墨1024 1170

golang 与 duck typing

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

我的奋斗 4198

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的博客 1030

学习go语言里Duck typing 概念

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

weixin_41099342的博客 1061

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

鸭子类型

闻韶 4747

duck java_编程语言中的 DUCK TYPING

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

weixin_39847034的博客 272

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

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

web前端开发 2311

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

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

weixin_34221073的博客 292

Duck Typing与协议 vs. 继承

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

cpongo5 121

5-1 duck typing的概念

INGNIGHT的专栏 279

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

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

qq_37858332的博客 3267

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

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

weiqi的博客 1088

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

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

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

面向对象的 duck-typing

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

foolint的博客 256

Agent 记忆压缩通常有哪些方法?

在传统软件中,状态可以通过关系型数据库做毫秒级精准存取;而在 AI Agent 架构中,大模型本身是无状态的概率推理引擎。为了维持多轮交互的连续性,开发者必须将历史记忆注入到上下文(Context)中。上下文爆炸与成本失控:多轮对话与工具调用轨迹(Tool Traces)包含海量冗余 Token,每次 API 请求都需要对全量历史重复计费,成本呈二次方上升。推理延迟(Latency)恶化:超长上下文会导致 GPU 在 Prefill 阶段的计算耗时大幅拉长,严重破坏实时交互体验。

2603_96126046的博客 313

PIC生物信息多样性指数计算软件

可用于计算生物多态性信息指数,很不错的一款软件,操作简单!

大模型部署-基于vLLM部署通义千问Qwen大语言模型-附项目源码+流程教程-优质项目实战.zip

大模型部署_基于vLLM部署通义千问Qwen大语言模型_附项目源码+流程教程_优质项目实战

上一篇: Windows环境SSH中文显示乱码解决方法
下一篇: Python module的重新加载
ruby_beginner
博客等级 码龄21年 9粉丝 36原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值