五六 发表于 2022-3-7 12:54:12

魔法方法使用求助

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
      except KeyError:
            return self.start + key*self.step
   
    def __setitem__(self, key, value):
      CheckIndex(key)
      self.change = value
      
s = Sequence(1,2)
      
t=Sequence(2,4)问题:
1.CheckIndex对象定义了值key的类型,大于0的int 和long的数值都是可以的,在__getitem__方法中调用CheckIndex去检查key=4时应该可以检查过去的,应该返回return self.change 这样的存储值,怎么就变成了返回异常开始计算值了?
2.类Sequence 初始化时,start =0,step=1. 在使用s = Sequence(1,2)把类实例化时,是不是把初始化的值修改为start =1 ,step =2?

代表月亮说爱你 发表于 2022-3-7 12:54:21

python3.0之后没有long了,你可以试一下type(long)应该是异常的,type(int)是正常的,int和long合并了
第二个问题当然是对的啦
页: [1]
查看完整版本: 魔法方法使用求助