我正在尝试使用__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
注意:第一条评论回答了问题。