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

Функции и декораторы модуля typing в Python.

В разделе представлены функции и декораторы модуля typing, представляющие дополнительные возможности по аннотированию исходного кода.

Содержание:


typing.cast(typ, val):

Функция typing.cast() приведения значение к типу.

Функция возвращает значение без изменений. Для средства проверки типов это означает, что возвращаемое значение имеет обозначенный тип, но во время выполнения намеренно ничего не проверяется, чтобы старт программы был как можно быстрее.

@typing.overload:

Декоратор @typing.overload() позволяет описывать функции и методы, которые поддерживают несколько различных комбинаций типов аргументов. За серией определений с @overload должно следовать ровно одно определение без @overload (для той же функции/метода).

Определения, декорированные @overload, предназначены только для проверки типов, так как они будут перезаписаны определением без @overload, в то время как последнее используется во время выполнения, но должно игнорироваться средством проверки типов. Во время выполнения прямой вызов функции с @overload вызовет исключение NotImplementedError. Пример перегрузки, которая дает более точный тип, чем можно выразить с помощью typing.Union или типов переменной:

@overload
def process(response: None) -> None:
    ...
@overload
def process(response: int) -> tuple[int, str]:
    ...
@overload
def process(response: bytes) -> str:
    ...
def process(response):
    <actual implementation>

@typing.final:

Декоратор @typing.final() указывает средствам проверки типов, что декорированный метод не может быть переопределен, а декорированный класс не может быть подклассом.

Например:

class Base:
    @final
    def done(self) -> None:
        ...
class Sub(Base):
    def done(self) -> None:  # Error reported by type checker
          ...

@final
class Leaf:
    ...
class Other(Leaf):  # Error reported by type checker
    ...

Проверка этих свойств во время выполнения отсутствует.

Новое в Python 3.8.

@typing.no_type_check:

Декоратор @typing.no_type_check() указывает, что аннотации не являются подсказками типа.

Он работает как декоратор класса или функции. С классом, он рекурсивно применяется ко всем методам, определенным в этом классе.

Обратите внимание, что декоратор НЕ применяется к методам, определенным в его суперклассах или подклассах.

Декоратор @typing.no_type_check() изменяет функции на месте.

@typing.no_type_check_decorator:

Декоратор @typing.no_type_check_decorator() дает другому декоратору эффект @typing.no_type_check().

@typing.type_check_only:

Декоратор @typing.type_check_only() помечает класс или функцию как недоступные во время выполнения.

Этот декоратор сам по себе недоступен во время выполнения. В основном он предназначен для маркировки классов, определенных в файлах-заглушках типов, если реализация возвращает экземпляр частного класса:

@type_check_only
class Response:  # частный или недоступный во время выполнения
    code: int
    def get_header(self, name: str) -> str: ...

def fetch_response() -> Response: ...

Обратите внимание, что возвращать экземпляры закрытых классов не рекомендуется. Обычно предпочтительнее делать такие классы публичными.