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

    __setitem__和__getitem__和__delitem__

    class Foo:
        def __init__(self, name):
            self.name = name
    
        def __getitem__(self, item):
            print('getitem执行', self.__dict__[item])
    
        def __setitem__(self, key, value):
            print('setitem执行')
            self.__dict__[key] = value
    
        def __delitem__(self, key):
            print('del obj[key]时,delitem执行')
            self.__dict__.pop(key)
    
        def __delattr__(self, item):
            print('del obj.key时,delattr执行')
            self.__dict__.pop(item)
    
    
    f1 = Foo('sb')
    

    一、__setitem__

    • 中括号赋值时触发
    f1['age'] = 18
    f1['age1'] = 19
    
    setitem执行
    setitem执行
    

    二、__getitem__

    • 中括号取值时触发
    f1['age']
    
    getitem执行 18
    
    f1['name'] = 'tank'
    
    setitem执行
    

    三、__delitem__与__delattr__

    • __delitem__:中括号删除时触发
    • __delattr__:.删除时触发
    del f1.age1
    del f1['age']
    
    del obj.key时,delattr执行
    del obj[key]时,delitem执行
    
    print(f1.__dict__)
    
    {'name': 'tank'}
    
  • 相关阅读:
    SpringBoot进阶教程(六十二)整合Kafka
    98每日博客
    96每日博客
    95日每周总结
    829每周总结
    815每周总结
    81每周总结
    822每周总结
    97每日博客
    88每周总结
  • 原文地址:https://www.cnblogs.com/Dr-wei/p/11851257.html
Copyright © 2011-2022 走看看