proxy class and __add__ method
gagsl-py2 at yahoo.com.ar
Thu Jul 31 02:47:06 CEST 2008
En Wed, 30 Jul 2008 07:48:45 -0300, Magnus Schuster
<magnusschuster at yahoo.com> escribi�:
>> __magic__ methods on new style classes are searched in the class, *not*
>> the instance. prx_i+1 looks for __add__ in type(prx_i), that is, in the
>> proxy class.
> With this explanation the behaviour is absolutely clear. Can I find some
> documentation anywhere containing more background information how magic
> functions are resolved? I haven't been successful with the Python
There is some documentation collected in
http://www.python.org/doc/newstyle/ and you can see also PEP252 and
>> Try implementing a similar __getattr__ method in a metaclass.
> I am totally clueless how to do this. Below you find my attempt. Neither
> __getattr__ nor __add__ of the metaclass 'meta' are ever called. May I
> you for some more guidance or corrections to the code below?
Unfortunately, as you have noted, my suggestion of using a metaclass with
__getattr__ doesn't work. That method isn't invoked when resolving those
I've found this recipe http://code.activestate.com/recipes/252151/ which
goes step by step: first a Proxy for old-style classes that works fine,
then a version for new-style classes identical to yours, then a metaclass
version with __getattr__ that doesn't work either, and finally a working
version. Very nice example.
Another -more complete- version is at
I hope you can adapt these to match your requirements.
More information about the Python-list