python容器类型的协议

Posted OnlyYan

tags:

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

1、协议(Protocols)与其他编程语言中的接口恒相似,它规定你哪些地方必须要定义,然而在python中的协议就显得不那么正式,事实上,在python中,协议更像是一种指南

2、序列类型和映射类型(元组,字典,字符串,列表)等都属于容器类型,关于容器类型的协议如下:

(1)如果你希望定制的容器是不可变的话(元组,字符串等),你只需定义__len__()和__getitem__()方法;

(2)如果你希望定制的容器是可变的话,你除了定义__len__()和__getitem__()方法之外,还需要定义__setitem__()和__delitem__()方法。

3、练习举例:

要求:编写一个不可改变的自定义列表,要求记录列表中每个元素被访问的次数

(1)实现代码如下:
    class CO:

    def __init__(self,*args):

        self.values=[x for x in args]

        self.count={}.fromkeys(range(len(self.values)),0)

    def __len__(self):

        return len(self.values)

    def __getitem__(self,key):

        self.count[key]+=1

        return self.values[key]

(2)运行结果如下:


 

 

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

python类型强转&二级容器

python08_数据结构(容器类型)

Python3 魔法方法:定制序列

简明python教程 --C++程序员的视角:容器类型(字符串元组列表字典)和参考

[Python系列-5]:Python之人工智能 - 基本语法-2- 类复合数据类型容器(列表集合元组字典)

Python中5种容器数据类型之性质对照表