Protocolos en Python
Tipado estructural: duck typing que el verificador de tipos entiende.
from typing import Protocol
class Dibujable(Protocol):
def draw(self) -> str: ...
class Circulo:
def draw(self) -> str:
return "( )"
class Cuadrado:
def draw(self) -> str:
return "[ ]"
def renderizar(figuras: list[Dibujable]) -> str:
return " ".join(s.draw() for s in figuras)
Cómo funciona
- Un
Protocollista los métodos que un tipo debe tener. CirculoyCuadradolo cumplen sin heredar.renderizaracepta cualquier cosa con la forma deDibujable.
Palabras clave y builtins usados aquí
classdefforlistreturnselfstr
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 284
- Tokens
- 84
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 48 segundos.
Paso 5 de 5 en Protocolos y gestores de contexto; paso 19 de 53 en Python pythónico.