← retour aux snippets

typing: NamedTuple et TypedDict

Structurer des données légères avec types statiques facultatifs.

objectif

Structurer des données légères avec types statiques facultatifs.

code minimal

from typing import NamedTuple, TypedDict

class Point(NamedTuple):
    x: int
    y: int

class UserTD(TypedDict):
    id: int
    name: str

p = Point(1, 2)
u: UserTD = {"id": 1, "name": "Ada"}
print(p.x + p.y == 3 and u["name"] == "Ada")  # attendu: True

utilisation

from typing import TypedDict
class Cfg(TypedDict, total=False):
    debug: bool
cfg: Cfg = {"debug": True}
print("debug" in cfg)

variante(s) utile(s)

from typing import NamedTuple
class RGB(NamedTuple):
    r: int; g: int; b: int
c = RGB(255, 0, 128)
print(c.g == 0)

notes

  • TypedDict n’affecte pas l’exécution, mais améliore l’outillage (mypy, pyright).
  • NamedTuple est immuable et indexable.