(original) (raw)

2013/5/23 Łukasz Langa <lukasz@langa.pl>
On 23 maj 2013, at 20:13, Éric Araujo <merwok@netwok.org> wrote:

\> Question: what happens if two functions (say in two different modules)
\> are registered for the same type?

Last one wins. Just like with assigning names in a scope, defining methods
in a class or overriding them in a subclass.

This is a serious annoyance, considering that there are several places where a large library can reasonably define the implementations (i.e. with the class, with the function, or in some utility module). Note that in contrast with the case of functions in a module or methods in a class, linting tools cannot be expected to detect a duplication between functions with different names defined in different modules.

Another thing missing from the PEP is the ability to access the implementation function when you know the generic function and the class. A major use case for this is to define the implementation for a subclass by reusing its parent's implementation, e.g. :

@some\_generic.register(my\_int)
def \_(arg):
print("Hello from my\_int!")
return some\_generic\[int\](arg)

--
Ronan Lamy