x at x.x
Sat Nov 27 04:52:32 CET 1999
David Ascher wrote:
> Without dealing with the last paragraph, you can fake it now, with
> something like (barely tested):
> import types
> class XRangeClass:
> def __getitem__(self, item):
> if type(item) == types.SliceType:
> if item.start is None:
> start = 0
> start = item.start
> if item.step is None:
> step = 1
> step = item.step
> if item.stop is None:
> stop = sys.maxint
> stop = item.stop
> return xrange(start, stop, step)
> elif type(item) == types.IntType:
> return item
> raise ValueError, "XRanges needs to be sliced with indices or slices"
Actually, they can be sliced with tuples too (try Int[1:2, 4:5]). But you
get the idea. I don't think a change in Python syntax is needed to clean
up range and xrange.
Allowing slice indices to be any objects, and not just integers...
that could be a nice addition. Like in the Enumerator metaclass example:
you could have
for x in Color[red:blue]: ...
> def __getslice__(self, start, stop):
> return self.__getitem__(slice(start, stop, None))
> Int = XRangeClass()
More information about the Python-list