multimethods decorator

Bruno Desthuilliers bruno.42.desthuilliers at wtf.websiteburo.oops.com
Wed Oct 10 13:18:04 EDT 2007


Gerardo Herzig a écrit :
> Hi all. Im reading the Gido's aproach using decorators at
> http://www.artima.com/weblogs/viewpost.jsp?thread=101605
> 
> It looks good to me, but the examples shows the functionality using 
> functions.
> Now, when i try to give this decorator into a method, if i try the
> 
> class test(object):
>    @multimethod(...)
>    def met(self, ...):
> 
> The multimethod decorator needs the types of the arguments, and, if the 
> met method requires self as the first argument, the multimethod should 
> look like
> @multimethod(self.__class__, bla, ble) or some like that...
> 
> Now i know that im wrong, because i have this error
>  >@multimethod(self.__class__)
>  >NameError: name 'self' is not defined

Indeed. Neither self (which will only be known at method call time) nor 
even the 'test' class (which is not yet defined when the decorator is 
executed) are availables.

> So what would be the first argument to @multimethod??

A string ?-)

FWIW, there's already an implementation of multiple dispacth by Mr. Eby...



More information about the Python-list mailing list