首页 python基础教程 Python面向对象-类内置方法(__setitem__();__getitem__();__delitem__())实现字典索引功能
pay pay
教程目录

Python面向对象-类内置方法(__setitem__();__getitem__();__delitem__())实现字典索引功能

日期: 二月 13, 2023, 11:51 p.m.
栏目: python基础教程
阅读: 530
作者: Python自学网-村长

摘要: 和上一篇文档一样,字典也是对象,所以通过类的内置方法也能使对象实现字典一样的键值对索引效果,这里需要实现三个内置方法:__setitem__();__getitem__();__delitem__()。

和上一篇文档一样,字典也是对象,所以通过类的内置方法也能使对象实现字典一样的键值对索引效果,这里需要实现三个内置方法:__setitem__();__getitem__();__delitem__()。

首先创建一个类,并且完善__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']

返回结果:

设置键值对 age 19
获取键值对 age
None
删除键值对 age

 从上面的代码和返回结果中我们可以看出来,通过增加对象属性之后,类中的三个方法会把随想属性名作为键,值作为对应的值,组成字典。然后我们就可以对其像字典一样进行增删改查了。

要想实现和字典一样的效果,能完整的吧对象属性名和值存储到字典中,还要实现一个初始化属性。

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)  # {}

返回结果:

{'age': 22}
22
{}

 

部分文字内容为【Python自学网】原创作品,转载请注明出处!视频内容已申请版权,切勿转载!
回顶部