-
python3教程之详解Python魔术方法__getitem__、__setitem__、__delitem__、__len__
本站最新发布 Python从入门到精通|Python基础教程
试听地址 https://www.xin3721.com/eschool/python.html
试听地址 https://www.xin3721.com/eschool/python.html
Python的魔术方法一般以__methodname__的形式命名,如:__init__(构造方法), __getitem__、 __setitem__(subscriptable所需method), __delitem__(del obj[key]所需method), __len__(len(…)所需method)等。
在Python中,如果我们想实现创建类似于序列和映射的类,可以通过重写魔法方法__getitem__、__setitem__、__delitem__、__len__方法去模拟。
魔术方法的作用:
__getitem__(self,key):返回键对应的值。
__setitem__(self,key,value):设置给定键的值
__delitem__(self,key):删除给定键对应的元素。
__len__():返回元素的数量
代码实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# coding:utf-8 ''' desc:尝试定义一种新的数据类型 等差数列 author:pythontab.com ''' class ArithemeticSequence( object ): def __init__( self ,start = 0 ,step = 1 ): print 'Call function __init__' self .start = start self .step = step self .myData = {} # 定义获取值的方法 def __getitem__( self ,key): print 'Call function __getitem__' try : return self .myData[key] except KeyError: return self .start + key * self .step # 定义赋值方法 def __setitem__( self ,key,value): print 'Call function __setitem__' self .myData[key] = value # 定义获取长度的方法 def __len__( self ): print 'Call function __len__' # 这里为了可以看出__len__的作用, 我们故意把length增加1 return len ( self .myData) + 1 # 定义删除元素的方法 def __delitem__( self , key): print 'Call function __delitem__' del self .myData[key] s = ArithemeticSequence( 1 , 2 ) print s[ 3 ] # 这里应该执行self.start+key*self.step,因为没有3这个key s[ 3 ] = 100 # 进行赋值 print s[ 3 ] # 前面进行了赋值,那么直接输出赋的值100 print len (s) # 我们故意多加了1,应该返回2 del s[ 3 ] # 删除3这个key print s[ 3 ] # 这里应该执行self.start+key*self.step,因为3这个key被删了 |
栏目列表
最新更新
python数据库连接池技术总结
python数据库连接池技术总结
成人网站性能提升 20 倍之经验谈 [Python
python动态捕获异常
python 探测网站目录的GUI程序
python实现中文字符繁体和简体中文转换
Python服务器开发 -- 网络基础
python高性能编程方法一
使用python管理Cisco设备
python抓取google搜索结果
基于UDP的服务器端和客户端
再谈UDP和TCP
在socket编程中使用域名
网络数据传输时的大小端问题
socket编程实现文件传输功能
如何优雅地断开TCP连接?
图解TCP四次握手断开连接
详细分析TCP数据的传输过程
图解TCP数据报结构以及三次握手(非常详
TCP协议的粘包问题(数据的无边界性)
Excel数据导入到Sql server
SQL Server like 字段
SQL Server中的LEFT、RIGHT函数
sql server 安装出现需要sqlncli.msi文件,错误
SQL Server学习内容(一)
SQLServer执行大脚本文件时,提示“无法执
数据库敏捷版本控制之3个数据库策略
将select 转为json
SQL Server 创建索引(index)
GROUP BY中的WITH CUBE、WITH ROLLUP原理测试及