zoukankan      html  css  js  c++  java
  • 23-2 item系列

    item系列

                                                           和对象使用 ’[ ]‘访问值有联系

    getitem ===》obj['wioe']
    setitem ===>obj['uyr'] = jash
    delitem ===》del obj['asfjh']

    下面代码其实就是用到了item的内置方法

    obj = {'k':'v'}
    print(obj)   # 字典的对象
    print(obj['k'])

    在内置的模块中,
    有一些特殊的方法,要求对象必须实现__getitem__/__setitem__才能使用

    class B:
        def __getitem__(self, item):
            return getattr(self, item)
    
        def __setitem__(self, key, value):
            setattr(self, key, value*2)   # 相当于 self.key = value*2
    
        def __delitem__(self, key):
            delattr(self, key)

    平常给属性赋值 ,打印结果

    b = B()
    
    b.k2 = 'v2'
    print(b.k2)       # v2

    用item系列添加属性

    b = B()
    
    b['k1'] = 'v1'      # 调用__setitem__   返回value*2  
    print(b['k1'])      # 调用__getitem__   获取value
    del b['k1']         # 调用__delitem__
    print(b['k1'])      # 找不到了,报错

    传入一个列表

    class B:
        def __init__(self,lst):
            self.lst = lst
            
        def __getitem__(self, item):
            return self.lst[item]
        
        def __setitem__(self, key, value):
            self.lst[key] = value
            
        def __delitem__(self, key):
            self.lst.pop(key)
    b = B(['111','222','ccc','ddd'])
    print(b.lst[0])     #111
    print(b[0])   # getitem方法设置,即可使用此方法获值   111
    b[3] = 'alex'   # setitem
    print(b.lst)   # ['111', '222', 'ccc', 'alex']
    del b[2]
    print(b.lst)  # ['111', '222', 'alex']
  • 相关阅读:
    .Net 第三方工具包整理
    Memcached帮助类
    十八、JavaScript之布尔类型
    十七、JavaScript之幂运算
    十六、JavaScript之%运算符
    十五、JavaScript之除法
    十四、JavaScript之不同类型变量相加
    十三、JavaScript之跨多行的变量申明
    十二、JavaScript之变量申明
    十一、JavaScript之两种注释方法
  • 原文地址:https://www.cnblogs.com/zhuangdd/p/12637619.html
Copyright © 2011-2022 走看看