python新手一个,正在学习中,在python的魔法方法使用的过程中遇到问题,请教大家:
程序代码:
- def CheckIndex(key):
- if not isinstance(key,(int, long)): raise TypeError
- if key < 0 : raise IndexError
- class Sequence:
- def __init__(self,start = 0, step = 1):
- self.start = start
- self.step = step
- self.change = {}
-
- def __getitem__(self,key):
- CheckIndex(key)
-
- try: return self.change[key]
- except KeyError:
- return self.start + key*self.step
-
- def __setitem__(self, key, value):
- CheckIndex(key)
- self.change[key] = value
-
- s = Sequence(1,2)
-
- t=Sequence(2,4)
复制代码 问题:
1.CheckIndex对象定义了值key的类型,大于0的int 和long的数值都是可以的,在__getitem__方法中调用CheckIndex去检查key=4时应该可以检查过去的,应该返回return self.change[key] 这样的存储值,怎么就变成了返回异常开始计算值了?
2.类Sequence 初始化时,start =0,step=1. 在使用s = Sequence(1,2)把类实例化时,是不是把初始化的值修改为start =1 ,step =2?
我知道答案
回答被采纳将会获得 10 C币 已有1人回答
|