所谓“鸭子类型(Duck Typing)”,是一种动态类型系统的编程概念。其核心思想来自于詹姆斯·惠特科姆·莱利的鸭子测试:“如果它走起来像鸭子,叫起来像鸭子,那么它就是鸭子”。 换句话说,在鸭子类型中,对象的有效性不依赖于其显式的类型,而是依赖于对象是否具有所需要的属性和方法。 可以粗略的理解为,所谓的实体的强...
1. 鸭子类型的基本概念 在鸭子类型中,对象的类型是由它的行为决定的,而不是由它的类或接口决定的。这意味着,如果一个对象具有某个方法或属性,那么它就可以被当作拥有相同方法或属性的对象对待,而无需关心它的具体类型。 2. 鸭子类型的优势 鸭子类型具有以下优势: 灵活性:鸭子类型允许我们编写更加灵活的代码,不...
总的来说,鸭子类型的核心理念在于鼓励关注接口而不是实现细节 ,强调通过对象行为而非类型标签来指导程序设计,这已成为现代Python开发中的重要原则之一。随着后续章节的展开 ,我们将更加深入地探讨Python中鸭子类型的实践应用、优缺点以及如何将其融入到面向对象设计之中。 第3章 Python中的鸭子类型实践 3.1 Python的动态...
但Python是弱类型语言,它支持一种特别的类型系统:鸭子类型。 鸭子类型的起源 鸭子类型起源于美国印第安纳州的诗人詹姆斯·惠特科姆·莱利(James Whitcomb Riley,1849-1916)的诗句,原话翻译过来是这样讲的: 『当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。』 我在想,是不...
在其他编程语言中,如果要实现自定义一个容器类型,通常的做法是继承编程语言内置的容器类型,然后包装或者覆盖相应方法的实现。从类型上看,自定义的容器类型,首先必须是容器类型。但是,在Python鸭子类型以及魔术方法的体系加持下,我们可以不继承任何容器类型,自定义一个类型,实现相关的魔术方法,从而让这个自定义的...
Python之鸭子类型:函数是对象,对象也可以像函数一样使用 引言 在前面的文章中,我们曾经反复提及的理念,“Python中一切皆对象”。在这个理念支持下,Python中的函数也是对象的一种,那么我们有没有办法自定义对象,像函数一样来使用呢。按照鸭子类型的理念来看,如果一个对象,用起来好像函数一样,那么这个对象就是...
在Python中,鸭子类型是一种非常自然且广泛使用的编程范式。Python是一种动态类型语言,它允许在运行时动态地确定对象的类型,这使得鸭子类型在Python中得到了很好的支持。 示例:假设我们有一个函数,它期望接收一个可以迭代的对象,并对该对象进行迭代操作。在鸭子类型中,我们不需要关心这个对象的具体类型,只要它支持迭代操...
在Python中的鸭子类型理念,以及魔法函数(或者称之为魔术方法)系统的加持下,开发者自定义的类型可以拥有任何内置类型的特性,出现在几乎任何想要出入的语法单元,表现得完全像内置类型一样。所以,有一种说法,所谓的“魔术方法”,更应该称之为“麻瓜方法”。我们每个开发者,不需要具备Python解释器或者内置模块的魔法...