zoukankan      html  css  js  c++  java
  • item 系列保留方法使用

    前面说过attr系列方法

     1 '''
     2     item 系列方法:
     3     __setitem__ ,__getitem__ ,__delitem__
     4 
     5 '''
     6 
     7 class DemoClass:
     8     def __setitem__(self, key, value):
     9         self.__dict__[key] = value
    10         print("setitem")
    11 
    12     def __delitem__(self, key):
    13         print("delitem")
    14 
    15     def __getitem__(self, item):
    16         print("getitem")
    17 
    18 
    19 if __name__ == "__main__":
    20     demo = DemoClass()
    21     print(demo.__dict__)
    22     demo.name = "tom" # 不会调用 __setitem__
    23     print(demo.__dict__)
    24 
    25     del demo.name  #删除时不调用 __delitem__
    26     print(demo.__dict__)
    27 
    28     #print(demo.age) #获取不存在的属性也不触发__getitem__
    29     '''
    30     输出:
    31         {}
    32         {'name': 'tom'}
    33         {}
    34     '''

    上面调用属性都是用的点,下面换种方式看看:

     1 class DemoClass:
     2     def __setitem__(self, key, value):
     3         self.__dict__[key] = value
     4         print("setitem")
     5 
     6     def __delitem__(self, key):
     7         print("delitem")
     8 
     9     def __getitem__(self, item):
    10         print("getitem")
    11 
    12 
    13 if __name__ == "__main__":
    14     demo = DemoClass()
    15     print(demo.__dict__)
    16     demo['name'] = "tom" # 会调用 __setitem__
    17     print(demo.__dict__)
    18 
    19     del demo['name']  #删除时调用 __delitem__
    20     print(demo.__dict__)
    21 
    22     demo['age'] #获取不存在的属性 触发__getitem__
    23     '''
    24     输出:
    25         {}
    26         setitem
    27         {'name': 'tom'}
    28         delitem
    29         {'name': 'tom'}
    30         getitem
    31     '''
        这就正常了,说明对于 attr系列方法对应的是点(.) 对于item系列方法对应的是([])
  • 相关阅读:
    内敛函数
    墓碑文件
    java默认继承
    Question2Answer初体验
    yii 事物
    情商
    jsonp跨域
    CDbConnectionExt.php 23.2实现数据库的主从分离,该类会维护多个数据库的配置:一个主数据库配置,多个从数据库的配置
    图片服务器规划漫谈
    c语言中返回结构体的函数(结构体可以被赋值,类型相同的结构体可以相互赋值)
  • 原文地址:https://www.cnblogs.com/zach0812/p/11310348.html
Copyright © 2011-2022 走看看