[PyQt] SIP newbie question 2

Jens Thoms Toerring jt at toerring.de
Wed Jul 6 16:49:37 BST 2011


On Wed, Jul 06, 2011 at 05:21:19PM +0200, Johan Råde wrote:
> I have a class that defines the methods
> 
>   int size() const;
>   const char* operator[int pos] const;
>   operator bool() const;
> 
> I want to rename these methods
> 
>   __len__
>   __getitem__
>   __nonzero__
> 
> when I  export them.
> 
> With SWIG I can do that with the %rename directive.
> How do I do that with SIP?

That's what the PyName function annotation is for:

int size( ) const /PyName=__len__/;

or, if you want to also retain the original name of the
function simply add 

int __len__( ) const
%MethodCode
    Py_BEGIN_ALLOW_THREADS
    sipRes = sipCpp->size( );
    Py_END_ALLOW_THREADS
%End

In the special case of the__len__()-function there's
(since 4.10.3) even a special annotation for that:

int size( ) const /__len__/;

See also

http://www.riverbankcomputing.co.uk/static/Docs/sip4/annotations.html#function-annotations
                             Refards, Jens
-- 
  \   Jens Thoms Toerring  ________      jt at toerring.de
   \_______________________________      http://toerring.de


More information about the PyQt mailing list