zoukankan      html  css  js  c++  java
  • __getitem__ __setitem__ __delitem__

    在Python中,如果我们想实现创建类似于序列和映射的类,可以通过重写魔法方法__getitem__、__setitem__、__delitem__、__len__方法去模拟。

    __getitem__(self,key):返回键对应的值。

    __setitem__(self,key,value):设置给定键的值

    __delitem__(self,key):删除给定键对应的元素。

    __len__():返回元素的数量

    下面我们模仿dict创建自己的类:

    class MyDict(object):

    def __init__(self):

    print‘call fun __init__’

    self.item = {}

    def __getitem__(self,key):

    print‘call fun __getItem__’

    return self.item.get(key)

    def __setitem__(self,key,value):

    print‘call fun __setItem__’

    self.item[key] =value

    def __delitem__(self,key):

    print‘cal fun __delitem__’

    del self.item[key]

    def __len__(self):

    returnlen(self.item)

    myDict = MyDict()

    print myDict.item

    myDict[2] = ‘ch‘

    myDict['hobb'] = ‘sing’

    print myDict[2]

    print myDict.item

    del myDict[2]

    print myDict.item

    print len(myDict)

    我们创建了一个行为类似映射的类,并生成了类的实例,这样当我们对类的属性item进行下标的操作时,会被__getitem__()/__setitem__()

    /__delitem__()拦截,从而进行相应的操作,如赋值,修改内容,删除内容等等。

  • 相关阅读:
    Git--记一次丢失本地记录但是代码已提交到gerrit
    IDEA--IDEA配置web项目
    JavaSE--泛型
    Cassandra--Cassandra 安装
    Git--.gitignore
    org.springframework.test.context.junit4.SpringJUnit4ClassRunner
    散列·跳房子散列
    散列·布谷鸟散列
    散列·完美散列
    散列·再散列
  • 原文地址:https://www.cnblogs.com/lincappu/p/12612982.html
Copyright © 2011-2022 走看看