On 2006-09-27, Peter Otten <[EMAIL PROTECTED]> wrote: > Antoon Pardon wrote: > >> I had written my own module, which works similarly but >> is somewhat extended. Here is an example of how it can >> be used and how I would like to use it but get stuck. >> >> from extreme import Top >>>>> Top >> Top >>>>> Top + 1 >> Top >>>>> Top - 30 >> Top >>>>> Top > 1e99 >> True >>>>> lst = range(10) >>>>> lst[:Top] >> Traceback (most recent call last): >> File "<stdin>", line 1, in ? >> TypeError: slice indices must be integers or None >> >> So this is where I am stuck. I need this Top value in >> a context where it can be used as a start or stop value >> in a slice. My idea was that since a stop value greater >> than the length of lst in this context would simply return >> a copy of lst, using Top in such a way should behave so >> too. However I don't see a way of doing that. >> >> So can someone provide ideas to get this behaviour? > >>>> import sys >>>> class Top(object): > ... def __index__(self): > ... return sys.maxint > ... >>>> Top = Top() >>>> range(5)[:Top] > [0, 1, 2, 3, 4] > > This can of course fail in many interesting ways...
To begin with this already fails: >>> for i in xrange(Top): ... print i ... Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: an integer is required What bothers me a bit about the rejection of PEP 326 is that one of the reasons stated is: http://mail.python.org/pipermail/python-dev/2004-January/042306.html - it is easily implemented when you really need it Well I thought it would simplify some things for me, so I tried an implementation and then found that some of the things that I would want to do with it wont work. So the "is easily implemented" bit seems not to be correct. -- Antoon Pardon -- http://mail.python.org/mailman/listinfo/python-list