Slice to Range

Sometimes inside __getitem__() method you may need to convert the “slice” coming as argument to a “range” :

#convert slice to range
def slice2range(s):	
	start = 0 if s.start is None else s.start
	step = 1 if s.step is None else s.step
	end = step if s.stop is None else s.stop
	return range(start,end,step)

#inside your code it will be something like this :
def __getitem__(self, item):
        if isinstance(item, slice):
        ....

Example :

: slice2range(slice(2,5))                                                                                                                                            
: range(2, 5)

: slice2range(slice(2,5,1))                                                                                                                                          
: range(2, 5)

: slice2range(slice(5))                                                                                                                                              
: range(0, 5)