TypedDict

Есть еще специальный типизированный dict. Если почему-то хочется иметь доступ к данным именно как к словарю, а не как к классу (то есть писать coordinates["latitude"] вместо coordinates.latitude), то можно воспользоваться типизированным словарём:

from typing import TypedDict

class Coordinates(TypedDict):
    longitude: float
    latitude: float

c = Coordinates(longitude=10, latitude=20)
print(c["longitude"])  # Работает автодополнение в IDE
print(c["longitudeRRR"])  # IDE покажет ошибку

Я на практике не вижу большого смысла пользоваться именно типизированным словарём, но в целом можно найти какие-то сценарии для его использования. Например, уже есть много кода, который использует нашу структуру как словарь, но мы хотим добавить в эту структуру типизацию и при этом не переписывать код, который уже использует эту структуру. В таком сценарии как раз имеет смысл воспользоваться TypedDict.

А когда мы пишем новый код, то именованные кортежи или датаклассы это наиболее часто используемые варианты. О датаклассах мы как раз сейчас и поговорим!