Python Glossary English

Python 3.13+typingфункция

typing.is_protocol

интроспекция

Проверяет, является ли класс протоколом (Protocol); True для классов, наследующих typing.Protocol (Python 3.13+).

Синтаксис

typing.is_protocol(cls)

Проверяет объявление, а не соответствие: True только если класс сам наследует typing.Protocol, а не для обычного класса, структурно подходящего под протокол — чтобы узнать, удовлетворяет ли объект протоколу, нужны @runtime_checkable и isinstance. Появилась в 3.13; на более ранних версиях приходится читать закрытый атрибут _is_protocol, как и делает fallback в примере.

Примеры

import typing
from typing import Protocol
class P(Protocol):
    def f(self) -> int: ...
check = getattr(typing, 'is_protocol', lambda c: getattr(c, '_is_protocol', False))
print(check(P))   # → True

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности