zoukankan      html  css  js  c++  java
  • Python概念-Item系列(林海峰教的)

    这个Item系列是egon老师自创的,个人还是可以接受这种文化底蕴的,所以直接拿来用,也是毫无违和感的

    所谓Attr系列,其实是__setattr__,__delattr__,__getattr__ 三个函数,从名字中可以看出来这是一套设置,删除,查询的函数,那我们来一个一个的看:

    __setitem__(self,key,value):当对类中的某个属性进行"赋值"时触发的函数(只有使用字典赋值的方式时才会触发此方法的执行)

    与Attr系列的区分:__setattr__(self):是在对象打点儿的方式赋值时,才会触发的方法

    代码示例:

    class Foo:
        def __setitem__(self, key, value):
            print(key,"获得",value)
    f = Foo()
    f["name"] = "egon"

    __delitem__(self,key):当类中的某个属性被删除时,触发此方法(只有使用del字典方式删除属性时,才会触发此方法)

    与Attr系列的区分:__delattr__(self):使用del类打点儿属性的方式删除属性,才会触发此方法

    代码示例:

    1 class Foo:
    2     name = "egon"
    3     def __delitem__(self, key):
    4         print(key,"已被删除")
    5 f = Foo()
    6 del f["name"]

    __getitem__(self,item):当调用类中的属性或方法时触发此方法的执行(只在使用类[key]字典的方式调用时,才会触发此方法)

    与Attr系列的区分:其实这里已经很明显了,__getattr__(self):是类打点儿调用且命名空间没有发现名字的情况下,触发此方法

    代码示例:

    1 class Foo:
    2     name = "egon"
    3     def __getitem__(self, item):
    4         print(item,"已被调用")
    5 f = Foo()
    6 f["name"]

    以上就是Item系列的小总结,总觉得egon说什么都是对的

  • 相关阅读:
    P3916 图的遍历
    P1656 炸铁路
    P6722 「MCOI-01」Village 村庄
    P1341 无序字母对
    P1072 [NOIP2009 提高组] Hankson 的趣味题
    10大主流自动化测试工具介绍
    Altium Designer中off grid pin问题的解决方法
    Easylogging++的使用及扩展
    博客园粒子特效稳定版
    C#中使用jieba.NET、WordCloudSharp制作词云图
  • 原文地址:https://www.cnblogs.com/DragonFire/p/6762562.html
Copyright © 2011-2022 走看看