面向对象之鸭子类型

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





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