__setitem__和__getitem和__delitem__

class Foo:
    def __init__(self, name):
        self.name = name

    def __getitem__(self, item):
        print('getitem執行', self.__dict__[item])

    def __setitem__(self, key, value):
        print('setitem執行')
        self.__dict__[key] = value

    def __delitem__(self, key):
        print('del obj[key]時,delitem執行')
        self.__dict__.pop(key)

    def __delattr__(self, item):
        print('del obj.key時,delattr執行')
        self.__dict__.pop(item)


f1 = Foo('sb')

1、__setitem__

  • 中括號賦值時觸發
f1['age'] = 18
f1['age1'] = 19
setitem執行
setitem執行

2、__getitem__

  • 中括號取值時觸發
f1['age']
getitem執行 18
f1['name'] = 'tank'
setitem執行

3、__delitem__與__delattr__

  • __delitem__:中括號刪除時觸發
  • __delattr__:.刪除時觸發
del f1.age1
del f1['age']
del obj.key時,delattr執行
del obj[key]時,delitem執行
print(f1.__dict__)
{'name': 'tank'}
相關文章
相關標籤/搜索