Looking for doh!.. simple sequence type

Ken Seehof kseehof at neuralintegrator.com
Fri Apr 12 07:51:24 EDT 2002


Max wrote:
> 
> Hmm ... I am trying to create a simple sequence type that I cant iterate 
> over like (Python 2.1)::
> 
> lst = Lst()
> for i in lst:
>      print i
> 
> And I thought I could do it like:
> 
> class Lst:
> 
>      def __len__(self):
>          return 4
> 
>      def __getitem__(self, idx):
>          return 42
> 
> But I have to write it like below to avoid an endless loop..
> 
> lst = Lst()
> for i in range(len(lst)):
>      print i,
> 
>  >>>42 42 42 42
> 
> I am shure it's so simple tha I will go Doh! .. But perhaps I haven't 
> had enough cofee yet. 'Cause I cannot seem to figure it out.
> 
> regards Max M
> 
The problem is that __getitem__ doesn't check length.  Instead, it
terminates on an IndexError exception.

class Lst:
    def __getitem__(self, idx):
        if idx>=4:
            raise IndexError
        else:
            return 42
    
lst = Lst()
for i in lst:
    print i
    
42
42
42
42





More information about the Python-list mailing list