循环忽略IndexError

时间:2019-04-02 23:27:14

标签: python python-3.x

我正在尝试使用__getitem__ __len__遍历一个类。 有时,getitem可能会给出indexerror,但输出中不会显示任何异常。该程序不会停止,只会中断循环。

但是当我单独访问这些项目时,确实会出现索引错误。

我的问题是为什么在forloop情况下我没有得到indexerror。

类定义

class Abc:                          
    a = [1,2,3,4]                   

    def __len__(self):              
        return 4                    

    def __getitem__(self,index):    
        if(index==2):               
            raise IndexError        
        return self.a[index]        

代码1

foo = Abc()                         

for y in foo:                       
    print(y)                        

print("The End") 

代码1的输出

1
2
The End

代码2

foo = Abc()

print(foo[1])
print(foo[2])

代码2的输出:

2
Traceback (most recent call last):  
  File "test.py", line 14, in <module>                                  
    foo[2]                          
  File "test.py", line 9, in __getitem__                                
    raise IndexError                
IndexError 

test.py was filename

注意:第一条评论回答了问题。

0 个答案:

没有答案