美文网首页
定制序列

定制序列

作者: 超人不会飞_9664 | 来源:发表于2018-12-16 16:38 被阅读0次

序列的定制一般包含有的魔法方法

  • len(self) 定义当被len()调用时的行为(返回容器中的元素个数)
  • getitem(self,key) 定义获取容器中制定元素的行为,相当于self[key]
  • setitem(self,key,value) 定义获取容器中制定元素的行为,相当于self[key] = value
  • delitem(self,key) 定义删除容器中指定元素的行为,相当于del self[key]
  • iter(self) 定义迭代器中的元素行为
  • reversed(self) 定义当reversed()调用时的行为
  • contains(self,item) 定义当使用成员,测试运算符(in 或 not in)的行为

容器类型的协议

  • 如果说你希望定制的容器是不可变的话,你只需要定义len(self)和getitem(self,key)
  • 如果说你希望定制的容器是可变的话,除了len(self)和getitem(self,key)方法外,你还需要定义setitem(self,key,value)和delitem(self,key)

定义一个不可变的容器,记录里面元素被访问的次数

class CapList():
    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]
c = CapList(1,2,3,4,5)
c[1]
2
c.count
{0: 0, 1: 1, 2: 0, 3: 0, 4: 0}

相关文章

  • 定制序列

    序列的定制一般包含有的魔法方法 len(self) 定义当被len()调用时的行为(返回容器中的元素个数) ge...

  • jackson自定义序列化中null值的处理

    参考:【私人定制jackson】定制jackson的自定义序列化(null值的处理) 在springboot中使用...

  • Storm性能优化

    性能优化1:kryo序列化 定制序列化 自定义的bolt之间emit数据是实体类的时候,注册kryo Storm ...

  • Unity Editor 编辑器扩展 四 ScriptableO

    ScriptableObject类定制可序列化数据这个类很有用,它可以打包数据对象,并且这个数据对象是序列化的,用...

  • 每天五道面试题(8)

    json序列化时,可以处理的数据类型有哪些?如何定制支持datetime类型? json数组类型,json对象类型...

  • linux BLAST序列比对 (nt/nr库)

    安装本地blast序列比对软件,我们可以搜索一个查询序列定制数据库,例如想研究一个新测序的基因组,或者感兴趣的一组...

  • linux BLAST序列比对

    安装本地blast序列比对软件,我们可以搜索一个查询序列定制数据库,例如想研究一个新测序的基因组,或者感兴趣的一组...

  • 18.Python中的for...range循环

    Python的for循环很灵活,可以实现很多定制的功能。可以使用for循环进行遍历的对象被称为可迭代对象,序列就是...

  • 【Go】自定义Json序列化

    一、忽略字段 我们知道,通过tag,可以有条件地实现定制Go JSON序列化的方式,比如json:"abc,omi...

  • 关于每日瑜伽10天瑜伽进阶精讲课

    专为练习遇到瓶颈、想要进阶高级瑜伽、轻松精准驾驭体式串联人定制的瑜伽课程。课程内容采用科学的序列编排,专业瑜伽老师...

网友评论

      本文标题:定制序列

      本文链接:https://www.haomeiwen.com/subject/enhshqtx.html