proxy class and __add__ method
gagsl-py2 at yahoo.com.ar
Thu Jul 31 03:13:49 CEST 2008
En Wed, 30 Jul 2008 14:54:51 -0300, Rhamphoryncus <rhamph at gmail.com>
> On Jul 29, 10:23 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
>> En Tue, 29 Jul 2008 13:13:51 -0300, Magnus Schuster
>> <magnusschus... at yahoo.com> escribi :
>> > I have written the following small proxy class which I expect to pass
>> > 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 +:
>> > and 'int'.
>> > How is this addition different from the previous line "j=..."? And
>>> 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.
More information about the Python-list