[Python-3000] [Python-Dev] Type of range object members

Nick Coghlan ncoghlan at gmail.com
Tue Aug 15 04:34:18 CEST 2006

Alexander Belopolsky wrote:
> On Aug 14, 2006, at 10:01 PM, Nick Coghlan wrote:
>> Guido van Rossum wrote:
>>> Methinks that as long as PyIntObject uses long (see intobject.h)
>>> there's no point in changing this to long.
>> Those fields are going to have to change to Py_Object* eventually if 
>> xrange() is going to become the range() replacement in Py3k. . .
> In this case it will become indistinguishable from
> typedef struct {
>     PyObject_HEAD
>     PyObject *start, *stop, *step;      /* not NULL */
> } PySliceObject;
> See sliceobject.h .  Would it make sense to unify rangeobject with 
> PySliceObject?

Not really. The memory layouts may end up being the same in Py3k, but they're 
still different types. The major differences between the two types just happen 
to lie in the methods they support (as defined by the value of the type 
pointer in PyObject_HEAD), rather than the data they contain.

Besides, the range object may actually keep the current optimised behaviour 
for dealing with PyInt values, only falling back to PyObject* if one of start, 
stop or step was too large to fit into a PyInt.


Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Python-3000 mailing list