Сообщить об ошибке.

Тип аннотации TypedDict() модуля typing в Python.

Добавление аннотаций типов в словарь.

Не используется в аннотациях, являются строительным блоком для объявления типов.

Синтаксис:

from typing import TypedDict

# Новое в Python 3.8.
TypedDict(dict)

Параметры:

  • dict - словарь.

Описание:

Тип аннотации TypedDict() модуля typing представляет собой специальную конструкцию для добавления аннотаций типов в словарь. Во время выполнения это простой словарь dict.

TypedDict объявляет тип словаря, который ожидает, что все его экземпляры будут иметь определенный набор ключей, где каждый ключ связан со значением согласованного типа. Это ожидание не проверяется во время выполнения, а выполняется только средствами проверки типизации.

Применение:

class Point2D(TypedDict):
    x: int
    y: int
    label: str

a: Point2D = {'x': 1, 'y': 2, 'label': 'good'}  # Проверка проходит
b: Point2D = {'z': 3, 'label': 'bad'}           # Не удается проверить тип

assert Point2D(x=1, y=2, label='first') == dict(x=1, y=2, label='first')

Информация о типе для интроспекции может быть доступна через Point2D.__ annotations__ и Point2D.__total__. Чтобы разрешить использование этой функции со старыми версиями Python, тип аннотации TypedDict поддерживает две дополнительные эквивалентные синтаксические формы:

Point2D = TypedDict('Point2D', x=int, y=int, label=str)
Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': str})

По умолчанию все ключи должны присутствовать в TypedDict. Такое поведение можно изменить, указав совокупность.

Применение:

class point2D(TypedDict, total=False):
    x: int
    y: int

Это означает, что в классе примера point2D, TypedDict может быть опущен любом из ключей. Ожидается, что средство проверки типизации будет поддерживать только буквальное значение False или True в качестве значения общего аргумента. По умолчанию используется значение True, и все элементы, определенные в теле класса, являются обязательными.

Новое в Python 3.8.