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']
  • 相关阅读:
    session笔记-韩顺平
    带宽
    cookie-韩顺平
    分层模式开发+MVC模式开发--韩顺平雇员数据库管理
    韩顺平-雇员管理系统-学习小结
    常用的PHP数据库操作方法(MYSQL版)
    使用Three.js 基本组件以及流程
    three.js 相机
    多线程的操作与数据绑定
    矩阵-
  • 原文地址:https://www.cnblogs.com/zhuangdd/p/12637619.html
Copyright © 2011-2022 走看看