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系列方法对应的是([])
  • 相关阅读:
    而字歌
    排列组合的学习,基础入门,选修2-3
    金句集(目前9句)
    简析几何叉乘与安培力的内在逻辑
    浅谈参变分离的妙用
    日语
    Tarjan-SCC-NOIP2015message
    WebAPI身份验证
    简单记录在Visual Studio 2013中创建ASP.NET Web API 2
    从两个平方算法到分治算法-java
  • 原文地址:https://www.cnblogs.com/zach0812/p/11310348.html
Copyright © 2011-2022 走看看