首页 > 技术文章 > 🍖鸭子类型

songhaixing 2020-12-25 10:04 原文

引入

上一篇我们谈到使用 abc 模块来强制的要求子类必须要有父类中的某些方法才能保证多态, 但这不是Python推崇的方法, 下面我们来介绍鸭子类型是如何实现使用多态的

一.什么是鸭子类型

v2-b789d8e597d920061dcd4efb585cd343_hd

鸭子类型, 即一个对象看起来像鸭子, 走路像鸭子, 说话也像鸭子, 具备了鸭子的所有特征和行为, 那么我们就可以说这个对象就是的鸭子

二.为什么推崇鸭子类型

使用鸭子类型, 我们完全可以不依赖继承, 只需要制造出外观和行为相同的对象, 并且可以实现不考虑对象类型的情况下来使用对象

  • 例 : 一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子
  • 例 : 一条狗走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这条狗就可以被称为鸭子 (当然鸭子的特性不止这些)

v2-f4bcc55c40efedc78401a3b6c59e50e5

三.鸭子类型示例

  • 例一 :
class 看时间:
    def look_time(self):
        print("看时间")
        

推荐阅读