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Сообщить о неточности