item系列方法
item系列
__getitem__(self, item)
通过中括号取值obj[item]
触发它的执行,无论item是否存在。
__setitem__(self, key, value)
通过中括号赋值obj[key] = value
触发它的执行,无论key是否存在。
__delitem__(self, key)
通过中括号删除值del obj[key]
触发它的执行,无论key是否存在。
class Dog:
head = 1
def __getitem__(self, item):
print('getitem执行了')
def __setitem__(self,key,value):
print('setitem执行了')
def __delitem__(self, key):
print('delitem执行了')
demu = Dog()
demu['tail']
demu['tail'] = 1
del demu['tail']
getitem执行了
setitem执行了
delitem执行了
实例:定义一个字典,即支持点取值赋值,也支持中括号取值赋值。
class Mydict:
def __init__(self,**kwargs):
self.__dict__.update(kwargs)
def __getitem__(self, item):
# return getattr(self,item)
return self.__dict__[item]
def __setitem__(self, key, value):
# setattr(self,key,value)
self.__dict__[key] = value
dic = Mydict(k1='v1',k2='v2')
print(dic['k1'])
dic['k3'] = 'v3'
print(dic['k3'])
print(dic.k3)
dic.k4 = 'v4'
print(dic['k4'])
v1
v3
v3
v4