zoukankan      html  css  js  c++  java
  • 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)运行结果如下:


     

  • 相关阅读:
    c3p0使用
    连接池介绍
    内存角度探寻C++面向对象 之 继承、多态
    java多线程总结
    SQL关联查询总结
    java内存管理总结
    自制操作系统 (六) 分割编译与中断处理
    C++内联函数
    C++函数指针
    springmvc下实现登录验证码功能
  • 原文地址:https://www.cnblogs.com/Yanjy-OnlyOne/p/10134814.html
Copyright © 2011-2022 走看看