面向对象-内置特殊方法-索引操作。类似于把对象当做字典来操作,需要实现3个内置方法:__setitem__;__getitem__;__delitem__。
class Cat:
def __setitem__(self, key, value):
print('设置键值对', key, value)
def __getitem__(self, item):
print('获取键值对', item)
def __delitem__(self, key):
print('删除键值对', key)
c = Cat()
c['age'] = 19 # 设置一组键值对,相当于一个属性和值
print(c['age']) # 获取键age对应的值,但是得到的是None,原因是上面的setitem函数没有存储设置的键值对
del c['age']
# 实现键值对的存储
print('++++++++++++++++')
class Cat:
def __init__(self):
self.dict = {}
def __setitem__(self, key, value):
# print('设置键值对', key, value)
self.dict[key] = value
def __getitem__(self, item):
# print('获取键值对', item)
return self.dict[item]
def __delitem__(self, key):
# print('删除键值对', key)
del self.dict[key]
c = Cat()
c['age'] = 22
print(c.dict) # {'age': 22}
print(c['age'])
del c['age']
print(c.dict) # {}