Python Glossary English

Python 3.8+typingфункция

typing.runtime_checkable

декораторы и маркеры

Декоратор класса-протокола (Protocol), разрешающий проверять его через isinstance()/issubclass() по наличию методов.

Синтаксис

@typing.runtime_checkable

Главная ловушка: isinstance() с таким протоколом проверяет только наличие методов по имени, а не их сигнатуры — объект с __len__, берущим не те аргументы, всё равно пройдёт проверку. А issubclass() работает лишь с протоколами из одних методов: для протокола с атрибутами-данными он бросит TypeError.

Примеры

from typing import Protocol, runtime_checkable
@runtime_checkable
class Sized(Protocol):
    def __len__(self) -> int: ...
print(isinstance([1, 2], Sized))   # → True

См. также

Частые ошибки

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