其实对我来说鸭子类型一直是一个比较模糊的概念,因为平常不去关注,关注的时候一般是在面试或者被面试的时候,今天在看一篇博客的时候又有看到,所以就索性弄清楚 ``` 首先 与duck typing相对应的是normal typing(对象的类型决定对象的特性) *既然是相对,可以简单理解为 duck typing
什么多态:同一事物有多种形态为何要有多态=》多态会带来什么样的特性,多态性 多态性指的是可以在不考虑对象具体类型的情况下而直接使用对象多态指的是一类事物有多种形态,比如动物有多种形态:猫、狗、猪 class Animal: #同一类事物:动物 def talk(self): pass class C
应试教育引发的思考 何为应试教育? 百度百科是这样解释的:填鸭式教育是指灌输式教育,由原苏联教育家伊·安·凯洛夫发明。填鸭,在鸭子生长的一定时期,通过按时把做成长条的饲料从鸭嘴填进去,减少鸭子的运动量,使鸭子快速增加重量。 结合我个人例子 初中时老师让我好好努力争取考上
应用题:鸭子知多少? 题意:有个人赶鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又两只,这样经过n个村子后还剩2只鸭子,问他出发时共赶多少只鸭子? 分析:一共有s只鸭子,那经过第一个村子就剩下 remain1 = s/2-2 只鸭子,经过第二个村子就剩下 remain2 = remain1/2-2 只鸭子。。以此类推
策略模式思想核心思想,分离变与不变。例如原先我们设计了一个动物园系统,这个是个动物园是个不正经的动物园,只有鸭子,比如绿头鸭,塑料玩具鸭,木头鸭子等等。原先的系统已经设计好了,系统中有各种鸭子继承了Duck,并有一个方法swim(假设所有鸭子都会游泳)类图如下: 要知道,作为程序员,肯
1.1 假如我们现在需要做一个模拟鸭子行为的游戏,游戏中会出现各种各样的鸭子,我们要做的就是让不同的鸭子有与其对应的功能并可扩展其功能。 首先我们可能会想到写一个Duck的父类其中定义鸭子的各种行为例如fly(),quack()等,然后不同的鸭子都可以去继承这个父类的鸭子。很好,这个很面
组合: 什么是组合 组合指的是一个对象中的属性,是另一个对象. 为什么要使用组合 组合目的和继承一样, 为了减少代码冗余. 封装: 什么是封装? 封装指的是把一堆属性(特征与技能)封装到一个对象中. 存数据的目的是为了取, 对象可以"."的方式获取属性. 为什么要封装? 封装
目录 1. 组合 1. 什么是组合: 2. 组合有什么用 3. 如何实现组合 2. 封装 1. 什么是封装 2. 封装有什么用 3. 如何实现封装 3. 访问限制机制 1. 什么是访问限制机制 2. 访问限制机制有什么用 3. 如何访问以__开头的属性 4. property 1. 什么是property 2. property 有什么用 3
“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就能够被称为鸭子” python的鸭子类型的设计让python的诸多对象的分类和应用更加灵活,需要注意类型和对象的区别(python的类也是对象),类型概念包含的范围更广,比如可迭代类型就包括list,tuple等类,这里list和tuple
需求: 1:模拟鸭子项目 从项目"模拟鸭子游戏"开始。 鸭子都会叫、会游泳。有的鸭子是红头的、有的鸭子是绿头的。 分析: 从OO(Object Oriented,面向对象)的角度设计这个项目。 鸭子的父类: 抽象的 1.都会gaga叫 2.抽象的外形(如:红头鸭、绿头鸭等) 3.都会游泳
策略模式 (Strategy Pattern) Define a family of algorithms,encapsulate each one,and make them interchangeable. 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。 策略模式定义:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于
最近在看HeadFirst设计模式一书,作为一个半路出家的程序员,感觉很多东西需要学习,学习的路程中有些东西学了当时觉得理解了,但日常工作中没有使用到渐渐的自己就忘记了。----------------------上面就是写者系列的博客的原因,主要是为了巩固知识,忘记在那个博主那边看过这么一句话,知识学
1992年,一家玩具厂的货船从中国出发,打算穿越太平洋到美国华盛顿州的塔科马港。但是走了4000英里后,遇到强烈风暴,一个装有29000只玩具鸭子的集装箱坠入大海并破裂,令所有的玩具鸭子漂浮在海面上。形成了一支庞大的“鸭子舰队”,从此随波漂流,先后经过印尼,澳大利亚,南美洲和夏威夷等地,
一.实验目的 掌握递归程序设计的方法。明确递归的概念,通过对问题的分析,找出递归关系以及递归出口以对问题进行递归结构设计;掌握递归程序转换为非递归程序的方法。 二、实验内容 用递归方法设计下列各题,并给出每道题目的递归出口(递归结束的条件)和递归表达式。同时考虑题目可否
今日内容: 如何查看对象的名称空间及对象名 继承的另一种使用 单继承与多继承 经典类与新式类 mro列表 菱形继承 接口 抽象类 鸭子类型 1、查看名称空间包含的变量: 使用类或对象名.__dict__查看 实际上在我们调用函数时就是在访问名称空间 比如
策略模式——定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 鸭子模型: 从继承到接口,到把易于变化的部分抽取出来,将鸭子的行为设计成接口并实现具体的行为,大大提高了灵活性,使行为的实现不会被绑死在鸭子类中,可扩展性很好
#接口思想:建立关联的桥梁#开放封闭原则#依赖导致原则#接口隔离原则#继承多态#抽象类和接口类#1.python中没有接口语法import abc'''def jiao():passdef chi():passdef pao():pass#知道操作功能,但不能明确操作的具体对象print(len('123'))#知道操作对象,不能明确具体操作方法print('1
策略模式 定义 什么是策略模式?定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 我的理解就是:比如我们接下来要说到的鸭子案例,有的鸭子可以飞,而飞又分为很多种,飞很高,飞得很低各种,我们就会把飞这个行为定义为接口,然后再分别去实现,而我们
前言 复合模式,就是将多个模式组合在一起使用,就叫做复合模式。复合模式没有单一的定义,也没有固定的UML类图。 下面我们通过一个demo,来了解一下复合模式的组合。 当然,这个demo仅仅是一个demo,没有任何的实际使用价值。 正文 现在我们有一个需求,我是一个农场主,有一片大池
策略模式 一 开发模拟鸭子游戏 已经有一个很成功的鸭子模拟游戏,里面有各种鸭子,一边游泳,一边呱呱叫。该系统采用的标准OO技术,设计了一个鸭子超类,并让各种鸭子继承此超类。 实现如下:超类中定义了鸭子的各种行为,包括呱呱叫,游泳,外观等。由于各种鸭子的外观是不一样的,display方
上面这张图,画的是鸭子还是兔子?自从1892年首次出现在一本德国杂志上之后,这张图就一直持续引发争议。有些人只能看到一只兔子,有些人只能看到一只鸭子,有些人两个都能看出来。心理学家用这张图证明了一件事,视觉感知不仅仅是人们看到了什么,也是一种心理活动。但是,这张图到底应该是什么?上
亲爱的朋友,欢迎你来到对象村,开始走进设计模式的世界。这里的每个人都很熟练的使用设计模式,很快我和你们一起,都会学习的很好,通过设计模式,跻身上流社会。 计划每一章节的学习,通过几个篇幅来完成,理论+实践的方式。书中很多地方用到了图形表示,小编尽量用图文的方式和大家互动。先用理论
1.概念 在开始学习前,我们先了解一些概念,方便我们接下来的学习。 OO基础 抽象 继承 多态 封装 OO原则 封装变化 多用组合,少用继承 针对接口编程,不针对实现编程 设计模式 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结
什么是多态 在不考虑实例类型的情况下使用实例 例子 peo=People() dog=Dog() pig=Pig() def func(obj): obj.talk() func(pig) 鸭子类型 #如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子,嘿嘿 在鸭子类型中,关注的不是对象的类型本身,而是它是如何使用的。例如
1. C#中多态实现的条件是 继承, 重写以及父类指向子类. 但是在弱类型Python里面, 实现多态的条件就显得很简洁, 只需要在子类中实现父类相同名称的方法即可. 2. 鸭子类型的解释: 若一个类A和目标类B有具有相同的方法, 那么Python认为类A和类B是同种类型 即看起来像鸭子(都是class,