[Python-Dev] PEP 443 - Single-dispatch generic functions (including ABC support)

Łukasz Langa lukasz at langa.pl
Fri May 31 03:05:46 CEST 2013


On 31 maj 2013, at 01:51, Łukasz Langa <lukasz at langa.pl> wrote:

> On 31 maj 2013, at 01:47, Łukasz Langa <lukasz at langa.pl> wrote:
> 
>> class State:
>>    def __init__(self):
>>        self.add.register(int, self.add_int)
> 
> Ouch, I realized this is wrong just after I hit "Send".
> self.add is a staticmethod so this registration will overload
> on every instance. Which is obviously bad.

So, after some embarrassing head banging, here's the correct
solution:

https://gist.github.com/ambv/5682351

So, it *is* possible to make instance-level and class-level
registration work with the existing @singledispatch code and a
bit of plumbing. Obviously, all that is not necessary for actual
static methods.

Back to the point, though. I don't feel we should complicate the
code, tests and documentation by introducing special handling
for methods. In terms of pure type-driven single dispatch, we
have a solution that was intentionally simple from the get-go.

The next step will be predicate dispatch anyway ;))

What do you think?



-- 
Best regards,
Łukasz Langa

WWW: http://lukasz.langa.pl/
Twitter: @llanga
IRC: ambv on #python-dev



More information about the Python-Dev mailing list