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

Декоратор @runtime_checkable модуля typing в Python.

Отмечает класс, как протокол времени выполнения

Синтаксис:

from typing import runtime_checkable

@runtime_checkable

Параметры:

  • нет.

Описание:

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

Такой протокол можно использовать с функциями isinstance() и issubclass(). Декоратор вызывает исключение TypeError при применении его к непротокольному классу. Такое поведение позволяет выполнять простую структурную проверку, очень похожую на "актера с одной ролью" в collections.abc, например Iterable.

Пример:

@runtime_checkable
class Closable(Protocol):
    def close(self): ...

assert isinstance(open('/some/file'), Closable)

Обратите внимание, что декоратор @runtime_checkable() будет проверять только наличие требуемых методов, но не сигнатуры типов!

Например, встроенная функция complex() реализует __float__(), поэтому она проходит проверку issubclass() на SupportsFloat. Однако сложный метод .__float__ существует только для того, чтобы вызвать TypeError с более информативным сообщением.