def checkIndex(key):
"""
所给的键是能接受的索引吗?
为了能接受,键应该是一个非负的整数。如果它不是一个整数,会引发TypeError;如果它是负数,则会引发IndexError
(因为序列是无限长的)。
"""
if not isinstance(key, (int, long)): raise TypeError
if (key<0): raise IndexError
class ArithmeticSequence:
def __init__(self, start=0, step=1):
"""
初始化算数序列
起始值——序列中的第一个值
步长——两个相邻值之间的差别
改变——用户修改的值的字典
"""
self.start = start
self.step = step
self.changed = {}
def __getitem__(self, key):
"""
Get an item from the arithmetic sequence.
"""
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 = ArithmeticSequence()
s
list(s)