笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册
查看: 6899|回复: 1

[问题求助] 魔法方法使用求助

[复制链接]

新手上路

Rank: 1

积分
3
发表于 2022-3-7 12:54:12 | 显示全部楼层 |阅读模式
python新手一个,正在学习中,在python的魔法方法使用的过程中遇到问题,请教大家:

程序代码:
  1. def CheckIndex(key):
  2.     if not isinstance(key,(int, long)): raise TypeError
  3.     if key < 0 : raise IndexError

  4. class Sequence:
  5.     def __init__(self,start = 0, step = 1):
  6.         self.start =  start
  7.         self.step = step
  8.         self.change = {}
  9.    
  10.     def __getitem__(self,key):
  11.         CheckIndex(key)
  12.         
  13.         try: return self.change[key]
  14.         except KeyError:
  15.             return self.start + key*self.step
  16.    
  17.     def __setitem__(self, key, value):
  18.         CheckIndex(key)
  19.         self.change[key] = value
  20.         
  21. s = Sequence(1,2)
  22.         
  23. 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人回答
回复

使用道具 举报

新手上路

Rank: 1

积分
5
发表于 2022-3-7 12:54:21 | 显示全部楼层
python3.0之后没有long了,你可以试一下type(long)应该是异常的,type(int)是正常的,int和long合并了
第二个问题当然是对的啦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-12-26 22:09 , Processed in 0.017284 second(s), 23 queries .

© 2001-2020

快速回复 返回顶部 返回列表