Kay Schluehr a écrit : > Catalin Marinas wrote: > >>Hi, >> >>Sorry if this was previously discussed but it's something I miss in >>Python. I get around this using isinstance() but it would be cleaner >>to have separate functions with the same name but different argument >>types. I think the idea gets quite close to the Lisp/CLOS >>implementation of methods. > > > Guido himself addressed multimethods in his Artima blog: > > http://www.artima.com/weblogs/viewpost.jsp?thread=101605 > > See also the subsequent discussion about subtyping problems. > > Kay >
Well, as said in the comments, what he propose is *not* working ! You cannot look for the type of the argument using a dictionnary of definition types, it just doesn't work because of polymorphism. Now suppose you have two classes A and B, B subclassing A. If you define : @method(A) def myfct(f): do_something_with_f Then, you want it to work with any object of type B ... but with either Guido's or this implementation, it won't ! The problem is much more complex and cannot be solved in constant (or even linear) time. What I read concerning Lisp is they use a cache to optimize method resolution. Pierre -- http://mail.python.org/mailman/listinfo/python-list