__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'])

猜你喜欢

转载自www.cnblogs.com/long-holiday/p/9914836.html