四时宝库

程序员的知识宝库

Python自定义字典类-UserDict(python定义字典变量)

Python collections包中的UserDict类是一个映射基类,是为了便于用户自定义映射类,它实现了映射类的基本方法,用户只需要根据需要重写需要自定义的方法。

UserDict有一个data属性,是dict类型,这是UserDict真正存储数据的地方,可以直接操作这个属性,进行数据存取。

如下示例,是使用collections.UserDict作为父类,自定义的字典MyDict。

实现了__missing__方法,定义当key不存在时的,处理逻辑。

实现了__contains__方法,定义执行in操作时的处理逻辑。

实现了__setitem__方法,定义执行赋值操作时的处理逻辑。

Bash
import collections

class MyDict(collections.UserDict):


    def __missing__(self, key):
        if isinstance(key,str):
            raise KeyError(key)
        return self[str(key)]


    def __contains__(self, item):
        return str(item) in self.data


    def __setitem__(self, key, value):
        self.data[str(key)] = value


d = MyDict([('zhangsan', [88,67]), ('lisi', [78,90]), ('wangwu', [58,94])])
print(d)

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接