1
from Lib import _collections_abc

我们所有关于序列类型的模块都在abc这个里面,前面也说过python是基于协议开发的语言,我们现在又要谈到我们的鸭子模型了。只要具有相应的魔法函数,它就具有了相应的功能:

如果我们要定制一个不可变的容器,如String,那么代码中就不能有修改容器数据的方法,如__setitem__(), __delitem__()

如果希望定制的容器支持reversed()这个内置函数,那么容器中需定义__reversed__()方法,从而提供对内置函数reversed()的支持;

在容器中,查询容器”容量”的方法是通过len()这个内置函数来实现,所以容器中需要定义__len__()方法;

如果希望容器支持读,写和删除功能,那么就要实现对应的方法:__getitem__(), __setitem__(), __delitem__()