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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4