typestar

TypedDict y NewType en Python

Tipar la forma de un dict, y darle a un primitivo un nombre distinto.

from typing import NewType, NotRequired, TypedDict

IdPaso = NewType("IdPaso", int)


class FilaPaso(TypedDict):
    tour: str
    idx: int
    stars: NotRequired[int]


def rotulo(fila: FilaPaso) -> str:
    return f"{fila['tour']}#{fila['idx']} ({fila.get('stars', 0)} estrellas)"


fila: FilaPaso = {"tour": "basics", "idx": 3, "stars": 2}
print(rotulo(fila))
print(rotulo({"tour": "traits", "idx": 0}))
print(IdPaso(7) + 1)

Cómo funciona

  1. TypedDict describe claves requeridas y opcionales.
  2. total=False vuelve opcional cada clave.
  3. NewType es un tipo distinto al verificar y un int al ejecutar.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
411
Tokens
144
Ritmo de tres estrellas
110 tpm

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

Escribe este fragmento

Paso 3 de 4 en Tipado a fondo; paso 43 de 53 en Python pythónico.

← Anterior Siguiente →