Problem with Python xrange

Peter Otten __peter__ at web.de
Tue Jun 8 11:56:21 EDT 2004


Konstantin Veretennicov wrote:

> Write a class implementing the behaviour you need. You'll want to
> implement xrange interface and slicing protocol. It's not possible to
> subclass xrange (yet?), so you'll have to delegate.
 
class XRangeFactory(object):
    def __getitem__(self, index):
        if isinstance( index, slice):
            if index.step is None:
                return xrange(index.start, index.stop)
            return xrange(index.start, index.stop, index.step)
        return xrange(index)

makeRange = XRangeFactory()
assert list(makeRange[5]) == range(5)
assert list(makeRange[7:11]) == range(7, 11)
assert list(makeRange[7:19:2]) == range(7, 19, 2)

Peter




More information about the Python-list mailing list