码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象之鸭子类型

时间:2019-11-28 21:06:24      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:也有   抽象   多态   没有   code   统一   strong   文件类型   lock   

TOC

一、什么是鸭子类型

当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。

重点: 在鸭子类型中,关注的不是对象的类型本身,而是它是如何使用的

鸭子类型是多态的一种表现形式

# 二者看起来都像文件,因而就可以当文件一样去用,然而它们并没有直接的关系


class Txt:  # Txt类有两个与文件类型同名的方法,即read和write
    def read(self):
        pass

    def write(self):
        pass


class Disk:  # Disk类也有两个与文件类型同名的方法:read和write
    def read(self):
        pass

    def write(self):
        pass

二、为什么要有鸭子类型

不同对象,先抽象出相同类型的方法,给他们定制一套统一的规范。

所有的类,在定义时都按照统一的规范进行编写。

三、多态的三种表现形式

  • 继承父类
    • 耦合度高,程序的可扩展性低
  • 继承抽象类
    • 耦合性极高,程序的可扩展性极低
  • 鸭子类型
    • 耦合度低,程序的可扩展性高

在Python中,强烈推荐使用鸭子类型





面向对象之鸭子类型

标签:也有   抽象   多态   没有   code   统一   strong   文件类型   lock   

原文地址:https://www.cnblogs.com/cnhyk/p/11953444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!