__setitem__() __getitem__() __delitem__()
#item系列 和对象使用[]访问值有联系 #obj={'k':'v'} #print(obj) #print(obj['k']) class B: def __getitem__(self, item): #print('执行我了',item) #return 'bbb' return getattr(self,item) #getattr(object, name[,default]) #getattr() 函数用于返回一个对象属性值。 #object -- 对象。 #name -- 字符串,对象属性。 #default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。 #获取对象object的属性或者方法 def __setitem__(self, key, value): #print(key,value) setattr(self,key,value) # #object -- 对象。 #name -- 字符串,对象属性。 #value -- 属性值。 def __delitem__(self, key): print(key)#这样并没有真的删除b['k'] delattr(self,key)#delattr 函数用于删除属性。 # #object -- 对象。 #name -- 必须是对象的属性。 b=B() b['k']='value'#对象['键']=值 会调用__setitem__()方法 print(b.k) print(b['k'])#对象['键']调用__getitem__()方法 #现在要删除b['k'] del b['k']#del 对象['键']调用__delitem__()方法 print(b['k'])