Como posso usar functools.singledispatch com métodos de instância?
Python 3.4adicionado a capacidade de definir sobrecarga de função com métodos estáticos. Este é essencialmente o exemplo da documentação:
from functools import singledispatch
class TestClass(object):
@singledispatch
def test_method(arg, verbose=False):
if verbose:
print("Let me just say,", end=" ")
print(arg)
@test_method.register(int)
def _(arg):
print("Strength in numbers, eh?", end=" ")
print(arg)
@test_method.register(list)
def _(arg):
print("Enumerate this:")
for i, elem in enumerate(arg):
print(i, elem)
if __name__ == '__main__':
TestClass.test_method(55555)
TestClass.test_method([33, 22, 11])
Na sua forma mais pura, osingledispatch
A implementação se baseia no primeiro argumento para identificar o tipo, tornando difícil estender essa funcionalidade aos métodos de instância.
Alguém tem algum conselho sobre como usar (ou jerry-rig) essa funcionalidade para fazê-la funcionar com métodos de instância?