En Wed, 30 Jul 2008 14:54:51 -0300, Rhamphoryncus <[EMAIL PROTECTED]>
escribió:
On Jul 29, 10:23 pm, "Gabriel Genellina" <[EMAIL PROTECTED]>
wrote:
En Tue, 29 Jul 2008 13:13:51 -0300, Magnus Schuster
<[EMAIL PROTECTED]> escribi :
> I have written the following small proxy class which I expect to pass
all
> function calls to the 'original' object:
> --- BEGIN ---
> class proxy(object):
> def __init__( self, subject ):
> self.__subject = subject
> def __getattr__( self, name ):
> return getattr( self.__subject, name )
> But "k=prx_i+1" raises a
> <type 'exceptions.TypeError'>: unsupported operand type(s) for +:
'proxy'
> and 'int'.
> How is this addition different from the previous line "j=..."? And
how
can I
modify the proxy class so that all methods are passed on, which are not
explicitly overloaded?
Try implementing a similar __getattr__ method in a metaclass.
But I don't think they use __getattr__.. they bypass it. Effectively
they catch the assignment to __add__ and cache it. You'll have to
always define it in the class and have it be ineffectual in some cases.
Ouch, yes, thanks, I noticed the fact after some testing.
--
Gabriel Genellina
--
http://mail.python.org/mailman/listinfo/python-list