I don't think it's completely clear what the following example should print:
class A: pass
class B(A): pass
def f(A a): print('A')
def f(B b): print('B')
f(B())
One might intuitively expect the 'best match' to be chosen, which would print 'B', but the current implementation actually chooses the 'first match', which would print 'A'. This isn't wrong per se but I think it's at least worth documenting.
I don't think it's completely clear what the following example should print:
One might intuitively expect the 'best match' to be chosen, which would print 'B', but the current implementation actually chooses the 'first match', which would print 'A'. This isn't wrong per se but I think it's at least worth documenting.