[Python-Dev] PEP for adding an sq_index slot so that any object, a or b, can be used in X[a:b] notation (original) (raw)

Travis E. Oliphant oliphant.travis at ieee.org
Thu Feb 9 23:38:16 CET 2006


Guido van Rossum wrote:

On 2/9/06, Travis Oliphant <oliphant.travis at ieee.org> wrote:

BTW do you also still want to turn ZeroDivisionError into a warning (that is changed into an error by default)? That idea shared a slide and I believe it was discussed in the same meeting you & I and some others had in San Mateo last summer.

I think that idea has some support, but I haven't been thinking about it for awhile.

Shouldn't this slot be in the PyNumberMethods extension? It feels more like a property of numbers than of a property of sequences. Also, the slot name should then probably be nbindex.

Yes, definitely!!!

There's also an ambiguity when using simple indexing. When writing x[i] where x is a sequence and i an object that isn't int or long but implements index, I think i.index() should be used rather than bailing out. I suspect that you didn't think of this because you've already special-cased this in your code -- when a non-integer is passed, the mapping API is used (mpsubscript). This is done to suppose extended slicing. The built-in sequences (list, str, unicode, tuple for sure, probably more) that implement mpsubscript should probe for nbindex before giving up. The generic code in PyObjectGetItem should also check for nbindex before giving up.

I agree. These should also be changed. I'll change the PEP, too.

I think all sequence objects that implement mpsubscript should probably be modified according to the lines I sketched above.

True.

This is very close to acceptance. I think I'd like to see the patch developed and submitted to SF (and assigned to me) prior to acceptance.

O.K. I'll work on it.

-Travis



More information about the Python-Dev mailing list