篇文章探讨一下python中的几个概念:协议 、鸭子类型 、 抽象基类 、混入类。
一、协议
在python中,协议是一个或一组方法。例如,Python 的序列协议包含 len 和 getitem 两个方法, 上下文管理器协议包含 enter 和 exit 两个方法(前者参见文章 《一文读懂python可迭代对象、迭代器和生成器》,后者参见文章《python中的上下文管理器和你所不了解的with》),此处不再赘述。
二、鸭子类型(duck typing)
多态的一种形式,在这种形式中,对象的类型无关紧要,只要实现了特定的协议即可。
举一个之前文章中的例子:
示例1
class Eg1:
def __init__(self, text):
self.text = text
self.sub_text = text.split(' ')
def __getitem__(self, index):
return self.sub_text[index]
def __len__(self):
return len(self.sub_text)