这个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说什么都是对的

 

查看原文