[Python-Dev] More C API abstraction for user defined types

Petre Galan Petre.Galan at gmail.com
Sun Jul 18 07:12:41 CEST 2010


Nick Coghlan <ncoghlan <at> gmail.com> writes:
> 
>On Wed, Jul 14, 2010 at 11:50 PM, Petre Galan <Petre.Galan <at> gmail.com
wrote:
>> No. The right interface is PyNumber_Long. The purpose of the PyNumber_Index
>> (and nb_index slot) is as index in slicing.
> 
> Allowing other objects to say "I'm a real integer, treat me as one" is
> exactly what the nb_index slot is for (see PEP 357). The use as an
> index in slicing was just the primary initial use case and the one
> that was chosen as the name for the new slot because nb_int was
> already taken for the lossy transformation. Indexing is not (and never
> has been) intended to be the only use case.
> 

PyNumber_Long is the right interface as it's the right way to do it.
PyNumber_Index allows me to compute a value as index in slicing, value that
may be different that the integer behaviour of object. PyNumber_Index is serving 
it's purpose as index in slicing, beyond that it's getting abused.
As for related discussions, float should not implement nb_int slot but be
resolved in int's constructor.

Petre



More information about the Python-Dev mailing list