En Wed, 30 Jul 2008 07:48:45 -0300, Magnus Schuster
<[EMAIL PROTECTED]> escribi�:
__magic__ methods on new style classes are searched in the class, *not*
in
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
Language
Reference.
There is some documentation collected in
http://www.python.org/doc/newstyle/ and you can see also PEP252 and
PEP253...
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
ask
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
names.
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
http://code.activestate.com/recipes/496741/
I hope you can adapt these to match your requirements.
--
Gabriel Genellina
--
http://mail.python.org/mailman/listinfo/python-list