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

Reply via email to