day28:hashlib

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)

猜你喜欢

转载自www.cnblogs.com/lisa-blog/p/10274611.html