def check_index(key): ''' 检查指定的key是否是可接受的索引 key必须是非负整数,才是可接受的。 如果不是整数,将引发TypeError异常; 如果是负数,将引发IndexError异常,因为这个序列是无穷的 ''' if not isinstance(key, int ):raise TypeError if key < 0: raise IndexError class ArithmeticSequence: def __init__(self, start = 0, step = 1): ''' 初始化这个算术序列 :param start: 指定第一个值,默认为0 :param step: 指定两个相邻值的差,默认为1 changed:一个字典,包含用户修改后的值 ''' self.start = start self.step = step self.changed = {} # 空字典表示没有任何元素被修改 def __setitem__(self,key,value): # 修改算术序列中的元素 check_index(key) self.changed[key] = value # 储存修改后的值 def __getitem__(self,key): # 从算术序列中获取一个元素 check_index(key) try: return self.changed[key] except KeyError: ''' 在Python中,当你使用a[key]这种方式从字典中获取一个值时,若字典中不存在这个key时就会产生一个KeyError的错误 ''' return self.start + key * self.step s = ArithmeticSequence(1,2) print(s[4])
李东岳
MADAO7
相关分类