[pypy-dev] rpython questions, **kw, __call__, __getattr__

Carl Friedrich Bolz cfbolz at gmx.de
Fri Jul 23 10:23:15 CEST 2010

On 07/23/2010 06:49 AM, Hart's Antler wrote:
> Looking through the pypy source code i see **kw, __call__ and
> __getattr__ are used,

Where exactly are they used? Not all of the code in PyPy is RPython.

> but when i try to write my own rpython code
> that uses these conventions, i get translation errors.  Do i need to
> borrow from "application space" in order to do this or can i just
> give hints to the annotator? Thanks, -brett
> #this is allowed
 > def func(*args):
 >     print(args)
> #but this is not?
 > def func(**kw):
 >     print(args)
 > #error call pattern too complex
> #this class fails to translate, are we not allowed to define our own
> __call__ and __getattr__ in rpython?

> class A(object):
 >     __call__(*args):
 >          print(args)
 >     __getattr__(self,name):
 >          print(name)

You cannot use any __xxx__ functions in RPython, only __init__ and 
__del__. Anyway, you cannot translate a class, so "fails to translate" 
has no meaning :-).


Carl Friedrich

More information about the Pypy-dev mailing list