Bruno Desthuilliers wrote: >[EMAIL PROTECTED] a écrit : > > >>>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. >>> >>> > > > >>Doh! >> >> > >If you're surprised, then you'd better learn way more about Python's >internal (execution model && object model mostly) before continuing with >multimethods. > > Is not that, is just...it allways make sense to me AFTER someone tells me!! :)
> > >>>>So what would be the first argument to @multimethod?? >>>> >>>> >>>A string ?-) >>> >>> > > > >>Ah? And what will that string contains? >> >> > >What makes sens for you. Don't forget that Python has very strong >introspection features. Also note that it's not uncommon to use a 2-pass >approach : marking some methods with the decorator, then doing the real >processing in the metaclass (which of course implies a custom metaclass) >or in the __new__ method (in which case this processing will happen on >*each* instanciation). > > Oh well, now you kill me with that one. > > >>>FWIW, there's already an implementation of multiple dispacth by Mr. Eby... >>> >>> >>Oh yes, i found the dispatch version of multimethods, but i have not tried >>it yet. Do you think is better this version than Guido's? >> >> > >I think that dispatch is actually used in a few packages, frameworks or >applications. Is it the case of Guido's stuff ? > >Also, IIRC, Guido's snippet is quite less generic than dispatch (which >is based on expression rules, not only on types). > > Ok. So im giving dispatch version a chance. Its working nice so far. Thanks Man! Gerardo -- http://mail.python.org/mailman/listinfo/python-list