[Python-3000] long/int unification

Travis Oliphant oliphant at ee.byu.edu
Wed Sep 6 01:25:06 CEST 2006


Guido van Rossum wrote:

> On 9/5/06, Travis Oliphant <oliphant.travis at ieee.org> wrote:
>
>> What impact is this long/int unification going to have on C-based
>> sub-types of the old int-type?  Will you be able to sub-class the
>> integer-type in C without carrying around all the extra backage of the
>> Python long?
>
>
> This seems unlikely given that the PyInt *type* will go away (though
> the PyInt *API* methods may well continue to exist). You can subclass
> the PyLong type just as easily. What baggage are you thinking of?

Just the extra stuff in the C-structure needed to handle the 
arbitrary-length integer.

>
> If you're thinking of the current special-casing for e.g. list[int] in
> ceval.c, that code will likely disappear (although something
> equivalent will eventually be added).

Yes, that's what I'm thinking of.   It would be nice if the "something 
equivalent" could be extended to other objects.  I suppose the 
discussion can be held off until then.

>
> But now that we have __index__, of course, there's less reason to
> subclass PyInt in the first place -- you can write your own 32-bit
> integer *without* inheriting from PyInt or PyLong, and it should be
> usable perfectly whenever an integer is expected. Id rather make sure
> *this* property is provided without compromise than attempting to keep
> random older optimizations alive for nostalgia's sake.


Of course, I agree entirely, so I doubt it will matter at all (except in 
optimizations).  There is probably going to be an increasing need to 
tell whether or not something can handle one of these interfaces.  I 
know this was already discussed on this list, but was a decision reached 
about how to tell if something exposes a specific interface? (I think 
the relevant discussion took place under the name "callable").  

I see a lot of

isinstance(obj, int)

in scientific Python code where testing for __index__ would be more 
appropriate.

Thanks for easing my mind.

-Travis



More information about the Python-3000 mailing list