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
原文地址:https://www.cnblogs.com/ChiRou/p/14210003.html