typestar

singledispatch en Python

Un solo nombre de función, y la implementación elegida por el tipo del primer argumento.

from functools import singledispatch


@singledispatch
def summarize(valor):
    return f"{type(valor).__name__}: {valor!r}"


@summarize.register
def _(valor: int):
    return f"int: {valor:+d}"


@summarize.register
def _(valor: list):
    return f"lista de {len(valor)}"


@summarize.register(str)
def _(valor):
    return f"texto de {len(valor)} caracteres"


for elemento in (3, "hola", [1, 2], 2.5):
    print(summarize(elemento))

Cómo funciona

  1. @singledispatch define el fallback.
  2. @name.register agrega una implementación tipada.
  3. Reemplaza una cadena de chequeos con isinstance.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
25
Caracteres a escribir
416
Tokens
120
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 69 segundos.

Escribe este fragmento

Paso 2 de 3 en functools y operator; paso 39 de 53 en Python pythónico.

← Anterior Siguiente →