[pypy-dev] Applevel types

Amaury Forgeot d'Arc amauryfa at gmail.com
Thu Jan 7 09:18:29 CET 2010


Hi,

2010/1/7 Dan Roberts <ademan555 at gmail.com>:
>    I want to make multiple interpreter-level types appear as a single
> application-level type.  Armin got me started in the right direction,
> pointing out pypy/objspace/std/{small,}int{type,object}.py to me.  This
> made it clear that sharing a typedef will accomplish this, however in
> the case of integer objects, only __new__ is registered with the
> typedef.  How are other methods registered for object instances?  I
> assumed that only methods provided to TypeDef would be visible at the
> application-level on instances, however this must not be the case, are
> any methods on the interpreter-level classes automatically wrapped?  Can
> anyone provide more complex examples or explain exactly how the int
> functionality works?

I think this is because int objects have no methods outside the special slots
__float__ __add__ __repr__... which are implemented as MultiMethods:
float__Int in intobject.py, for example.

The magic that converts these functions to type methods is in
pypy.objspace.std.register_all()

-- 
Amaury Forgeot d'Arc



More information about the Pypy-dev mailing list