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.