__setitem__() __getitem__() __delitem__()

Posted long-holiday

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了__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])

 

以上是关于__setitem__() __getitem__() __delitem__()的主要内容,如果未能解决你的问题,请参考以下文章

__getitem__ __setitem__ __delitem__ 使用

python学习之__getitem__,__setitem__,__delitem__

python - __setitem__/__getitem__/__delitem__类的内置方法

__getitem__\__setitem__\__delitem__

为啥当我使用 [:] 时我的子类的 __getitem__ 和 __setitem__ 没有被调用?

python 魔法方法之:__getitem__ __setitem__ __delitem__