面向对象之鸭子类型

Posted cnhyk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象之鸭子类型相关的知识,希望对你有一定的参考价值。

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中,强烈推荐使用鸭子类型







以上是关于面向对象之鸭子类型的主要内容,如果未能解决你的问题,请参考以下文章

面向对象之组合封装多态性鸭子类型

Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)

面向对象-鸭子类型

面向对象的三大特性 鸭子类型 类的约束 super的深度剖析

Python面向对象编程——多态多态性鸭子类型

面向对象三大特性