>>> def checkIndex(key):
... if not isinstance(key,(int,long)):raise TypeError
... if key<0:raise IndexError
...
>>> class ArithneticSequence:
... def __init__(self,start=0,step=1):
... self.start=start
... self.step=step
... self.changed={}
... def __getitem__(self,key):
... checkIndex(key)
... try:return self.changed[key]
... except KeyError:
... return self.start+key*self.step
... def __setitem__(self,key,value):
... checkIndex(key)
... self.changed[key]=value
...
>>> s=ArithneticSequence(1,2)
>>> s[4]
9
>>> s[4]=2
>>> s[4]=2
>>> s[4]
2
>>> s[5]
11
>>> del s[4]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: ArithneticSequence instance has no attribute '__delitem__'
>>> s["four"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 7, in __getitem__
File "<stdin>", line 2, in checkIndex
TypeError
>>> s[-42]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 7, in __getitem__
File "<stdin>", line 3, in checkIndex
IndexError
相关文章
- 03-23python 基本的序列和映射规则
- 03-23Python:序列的copy() 方法和 copy 模块
- 03-23Python 虚拟环境virtualenv的安装和基本使用
- 03-23Python 3中循环,列表推导和映射的性能
- 03-23Python函数的作用域规则和闭包
- 03-23python基础3 - 变量的基本使用和命名
- 03-23『无为则无心』Python序列 — 19、Python列表的其他操作(切片和遍历)
- 03-23Elatic Search 7.8 索引、文档和映射的基本操作
- 03-23【python】-- 多进程的基本语法 、进程间数据交互与共享、进程锁和进程池的使用
- 03-23爬虫与Python:(三)基本库的使用——扩展:异常处理中except的用法和作用是什么