__getitem__是让类可以[key]的方式调用,这个pos就承担了key的作用。你的循环实际是在执行foo[j],j=0,1,2...的操作,每次都调用了__getitem__(j),如果pos删掉,你每次调用这个方法都返回range(0,30,10),一直取不到头,就一直循环了。不删除的话,当j=2就到头停止了。
__getitem__
foo[j],j=0,1,2...
__getitem__(j)