def checkIndex(key):
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
# Store the start value
self.step = step
# Store the step value
self.changed = {}
# No items have been modified
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 = ArithmeticSequence(1, 2)
>>>s[5]
11
>>>s[4] = 2
>>>s[4]
2
>>>s[-1]
raise IndexError
>>>s.__getitem__(9)
19
>>>s.__setitem__(8,1)
>>>s.__getitem__(8)
1
点评
一个类的构造,如类输入的参数的定义,可以在__init__函数中定义。
内嵌函数__getitem__,用于实现方括号[]索引。
内嵌函数__setitem__,运用字典的方法{}存储你设定的键和值。