typestar

Protocolos en Python

Tipado estructural: cualquier cosa con los métodos correctos satisface el protocolo.

from typing import Protocol, runtime_checkable


@runtime_checkable
class ConTamano(Protocol):
    def __len__(self) -> int:
        ...


class Tour:
    def __init__(self, pasos):
        self.steps = pasos

    def __len__(self):
        return len(self.steps)


def describir(elemento: ConTamano) -> str:
    return f"{len(elemento)} elementos"


print(describir([1, 2, 3]), describir(Tour([1, 2])))
print(isinstance(Tour([]), ConTamano), isinstance(3, ConTamano))

Cómo funciona

  1. No se requiere herencia, solo métodos que coincidan.
  2. runtime_checkable permite usar isinstance contra él.
  3. Así el duck typing recibe un nombre que el verificador entiende.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
23
Caracteres a escribir
428
Tokens
121
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 66 segundos.

Escribe este fragmento

Paso 2 de 4 en Tipado a fondo; paso 42 de 53 en Python pythónico.

← Anterior Siguiente →