1,继续上一小节,讲解双下内置方法,双下getitem,setitem,delitem方法,是对象可以像字典一样的来访问属性
# 普通的字典是像下面这样操作的 dic = {'k' : 'v'} dic['k'] = 'v' class Foo: def __init__(self,name,age,sex): self.name = name self.age = age self.sex =sex def __getitem__(self, item): if hasattr(self,item): return self.__dict__[item] def __setitem__(self, key, value): self.__dict__[key] = value def __delitem__(self, key): del self.__dict__[key] def __delattr__(self, item): print('del obj.key时,我执行') self.__dict__.pop(item) # 只要想像字典一样的来操作,就必须实现这几个函数 f = Foo('lisa',100,'女') print(f['name']) f['name'] = 'lucy' f['hobby'] = 'running' print(f['name']) print(f.name,f['name']) del f.hobby # object原生支持 __delattr__ object 原生实现的 # del f['hobby'] # 通过自己来实现的 # print(f.hobby)