Re: Slices when extending python with C++

rozelak at volny.cz rozelak at volny.cz
Wed Dec 28 08:01:49 EST 2011


Dear Robert,

thank you very much for your answer. I understand what you mean and
I have looked at slice object and C-api methods it provides. It
should be easy to implement it.

The only question is how exactly yo implement the general getter,
since sq_item you mention (assume you mean 
PySequenceMethods.sq_item) has the following signature:

PyObject * (* ssizeargfunc)(PyObject *, Py_ssize_t)

accepting Py_ssize_t as the index, not a PyObject * which would hold
the slice.

So, how exactly to implement the getter? As a general method named
__getitem__ registered in PyMethodDef? Or in another way?

Thank you very much again. Regards,
Dan



----- PŮVODNÍ ZPRÁVA -----
Od: "Robert Kern" <robert.kern at gmail.com>
Komu: python-list at python.org
Předmět: Re: Slices when extending python with C++
Datum: 28.12.2011 - 10:24:42

> On 12/27/11 11:02 PM, rozelak at volny.cz wrote:
> > Hallo,
> > I have kind of special question when extening
> > python with C++
> > > implemented modules.
> >
> > I try to implement a class, behaving also like
> > an array. And I need
> > > to implement slice-getters. I implemented
> > PySequenceMethods.sq_slice
> > > to get "simple" slices like:
> >
> > myobj[x:y]
> >
> > It works perfectly, without problems. But now I
> > have a problem when
> > > need to access the array with "special" slices,
> > like:
> > >
> > myobj[x:y:step]
> > myobj[::-1]  # to revert the array
> >
> > I would like to ask which method must be
> > implemented to get this
> > > "special" slice getters. The "simple" slice
> > PySequenceMethods.sq_slice getter accepts only
> > two indexes - from,
> > > to, but not a step (which would solve the
> > issue).
> > 
> The sq_slice slot is deprecated, just like the
> __getslice__() method on the 
> Python side. Instead, implement sq_item to accept
> a slice object in addition to 
> integer indices.
> 
> http://docs.python.org/c-api/slice.html
> 
> -- 
> Robert Kern
> 
> "I have come to believe that the whole world is an
> enigma, a harmless enigma
> that is made terrible by our own mad attempt to
> interpret it as though it had
> an underlying truth."
> -- Umberto Eco
> 
> -- 
> http://mail.python.org/mailman/listinfo/python-list
> 




-- 
Tradiční i moderní adventní a novoroční zvyky, sváteční jídlo a
pití, výzdoba a dárky... - čtěte vánoční a silvestrovský speciál
portálu VOLNÝ.cz na http://web.volny.cz/data/click.php?id=1301




More information about the Python-list mailing list