鸭子类型

Posted sunny666

tags:

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

Python崇尚鸭子类型,即‘如果看起来像、叫声像而且走起路来像鸭子,那么它就是鸭子’

python程序员通常根据这种行为来编写程序。例如,如果想编写现有对象的自定义版本,可以继承该对象

也可以创建一个外观和行为像,但与它无任何关系的全新对象,后者通常用于保存程序组件的松耦合度。

例1:利用标准库中定义的各种‘与文件类似’的对象,尽管这些对象的工作方式像文件,但他们没有继承内置文件对象的方法

 

class File:
pass

class Disk:
def read(self):
print(‘disk read‘)

def write(self):
print(‘disk write‘)


class Text:
def read(self):
print(‘text read‘)

def write(self):
print(‘text write‘)


disk=Disk()
text=Text()

disk.read()
disk.write()

text.read()
text.write()

例2:序列类型有多种形态:字符串,列表,元组,但他们直接没有直接的继承关系

#str,list,tuple都是序列类型
s=str(‘hello‘)
l=list([1,2,3])
t=tuple((4,5,6))

#我们可以在不考虑三者类型的前提下使用s,l,t
s.__len__()
l.__len__()
t.__len__()

len(s)
len(l)
len(t)


























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

如何用结构模式匹配表达 hasattr() 鸭子类型逻辑?

面向对象之鸭子类型

鸭子类型

鸭子类型

py基础考察点

python 鸭子类型