一、什么是鸭子类型
当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。
当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。
重点: 在鸭子类型中,关注的不是对象的类型本身,而是它是如何使用的
鸭子类型是多态的一种表现形式
# 二者看起来都像文件,因而就可以当文件一样去用,然而它们并没有直接的关系
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中,强烈推荐使用鸭子类型