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
.
А когда мы пишем новый код, то именованные кортежи или датаклассы это наиболее часто используемые варианты. О датаклассах мы как раз сейчас и поговорим!