找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2779|回复: 1

[已解决] 魔法方法使用求助

1

主题

1

帖子

1

积分

贫民

积分
1
peace9535 发表于 2017-9-10 10:26:20 | 显示全部楼层 |阅读模式
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?

回复

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-9-10 16:27:37 | 显示全部楼层
python3.0之后没有long了,你可以试一下type(long)应该是异常的,type(int)是正常的,int和long合并了
第二个问题当然是对的啦
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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