PEP 705: TypedDict: Read-only items では、TypedDict
に読み取り専用の項目を指定できるようになりました。
from typing import TypedDict, ReadOnly
class FooDict(TypedDict):
x: int
y: int
z: ReadOnly[int] # z は読み取り専用
foo: FooDict = {"x": 1, "y": 2, "z": 3}
foo["x"] = 4 # Ok
foo["z"] = 5 # エラー: "z" is a read-only key in "FooDict"
ただし、リストなどに対する要素の追加などは行えます。
class SeqDict(TypedDict):
seq: list[int]
d: SeqDict = {"seq": [1]}
foo["seq"].append(2) # Ok
foo["seq"] = [] # エラー