Python 使用__getitem__ __setitem__ __delitem__ 创建自己的映射类型

可以通过Python 的 特殊函数 __getitem__ 、__setitem__ 、__delitem__ 去创建自己的字典这样的映射类型。

Example:

#! /usr/bin/env python

class MyDict(object):

    def __init__(self):
        self.item = {}

    def __getitem__(self,key):
        return self.item.get(key)

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

    def __delitem__(self,key):
        del self.item[key]

    def __len__(self):
        return len(self.item)

if __name__ == "__main__":
    myDict = MyDict()

    myDict.__setitem__(‘lang‘,‘python‘)
    print myDict.__getitem__(‘lang‘)
    print "length is", len(myDict)
    myDict.__delitem__(‘lang‘)
    print myDict.__getitem__(‘lang‘)
    print ‘*‘ * 20

    myDict[‘lang‘]  = "python"
    print myDict[‘lang‘]
    print "length is", len(myDict)
    del myDict[‘lang‘]
    print myDict[‘lang‘]

执行结果如下:

python
length is 1
None
********************
python
length is 1
None

例子中引入了 __len__ 特殊函数。这样我们就可以计算自己定义的字典的长度了。学习这一块的知识点,主要是想学习python 的 collections 包中的 MutableMapping 类(提前做个知识储备)。

时间: 2024-10-09 07:03:24

Python 使用__getitem__ __setitem__ __delitem__ 创建自己的映射类型的相关文章

python 魔法方法之:__getitem__ __setitem__ __delitem__

python的魔法方法: 在Python中,如果我们想实现创建类似于序列和映射的类,可以通过重写魔法方法__getitem__.__setitem__.__delitem__.__len__方法去模拟. __getitem__(self,key):返回键对应的值. __setitem__(self,key,value):设置给定键的值 __delitem__(self,key):删除给定键对应的元素. __len__():返回元素的数量 下面我们模仿dict创建自己的类: class MyDic

python 的__len__,__getitem__ __setitem__ __delitem__ __contains__

可变集合需要实现: __len__  __getitem__    __setitem__  __delitem__不可变集合需要实现: __len__  __getitem__ __len__:返回集合长度 __getitem__(self, item) 使用索引访问元素 __setitem__(self, key, value) 对索引赋值,使用 self[key] = value . __delitem__(self, key) 删除索引值 del self[key]    __conta

__getitem__ __setitem__ __delitem__ 使用

#__getitem__ __setitem__ __delitem__运行设置key value值了class fun: def __init__(self): print('test') def run(self): print('run') def __getitem__(self, item): print('__getitem__','item:',item) def __setitem__(self, key, value): print('__setitem__','key:',k

__getitem__\__setitem__\__delitem__

class Foo(object): def __init__(self): self.data = {} def __getitem__(self, key): print('__getitem__', key) return self.data.get(key) def __setitem__(self, key, value): print('__setitem__', key, value) self.data[key] =value def __delitem__(self, key)

python web框架 django 工程 创建 目录介绍

# 创建Django工程django-admin startproject [工程名称] 默认创建django 项目都会自带这些东西 django setting 配置文件 django可以配置缓存 连接数据库 做静态文件处理 找模板 django url 用户访问django程序 会从自己规则做匹配 一旦匹配成功 返回用户数据 没有匹配上不返回 django wsgi python有个自带的wsgi模块 可以写自定义web框架 用wsgi在内部创建socket对象就可以了 自己只写处理函数就可

Python 使用 PyMysql、DBUtils 创建连接池提升性能

Python 使用 PyMysql.DBUtils 创建连接池提升性能 Python 编程中可以使用 PyMysql 进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接 MySQL 数据库请求时,都是独立的去请求访问,相当浪费资源,而且访问数量达到一定数量时,对 mysql 的性能会产生较大的影响.因此,实际使用中,通常会使用数据库的连接池技术,来访问数据库达到资源复用的目的. 解决方案:DBUtils DBUtils 是一套 Python 数据库连接池包,并允许对非线程安全的数据库接口

python标准库基础之mmap:内存映射文件

#作用:建立内存映射文件而不是直接读取内容文本信息内容:如下(名称是text.txt) Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec egestas, enim et consectetuer ullamcorper, lectus ligula rutrum leo, a elementum elit tortor eu quam. Duis tincidunt nisi ut ante. Nulla facil

Python 映射类型:字典

一.映射类型简介 (1) 映射即一个哈希值(键,key)对应一个指向的对象(值,value),字典是 Python 中唯一的映射类型(2) 序列类型用索引作为键,而映射类型用其他对象类型作为键,一般最常见的是用字符串作为键(3) 映射类型不再用"序列化排序"的键,所以映射类型中的数据是无序排列的(4) 映射类型通常被称做哈希表,是因为字典对象就是哈希类型的 二.字典的基本操作 (1) 创建字典:a = {'name':'via', 'age':18} 注意:不要用 dict 作为变量名

Python有了asyncio和aiohttp在爬虫这类型IO任务中多线程/多进程还有存在的必要吗?

最近正在学习Python中的异步编程,看了一些博客后做了一些小测验:对比asyncio+aiohttp的爬虫和asyncio+aiohttp+concurrent.futures(线程池/进程池)在效率中的差异,注释:在爬虫中我几乎没有使用任何计算性任务,为了探测异步的性能,全部都只是做了网络IO请求,就是说aiohttp把网页get完就程序就done了. 结果发现前者的效率比后者还要高.我询问了另外一位博主,(提供代码的博主没回我信息),他说使用concurrent.futures的话因为我全