Python概念-Item系列
所谓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 = "wdb" 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 = "wdb" 3 def __getitem__(self, item): 4 print(item,"已被调用") 5 f = Foo() 6 f["name"]