Python Glossary English

Python 3.5+typingпонятие

typing.SupportsAbs

протоколы Supports*

Runtime-проверяемый протокол «поддерживает abs()» (есть __abs__).

Синтаксис

isinstance(obj, typing.SupportsAbs)

Главное назначение — аннотация параметра: пометить, что функции годится любой объект с abs(), не привязываясь к конкретному классу. Протокол параметризован типом результата — SupportsAbs[float] уточняет, что abs() вернёт float. isinstance здесь проверяет лишь наличие метода __abs__, но не его сигнатуру и не тип возврата.

Примеры

from typing import SupportsAbs
print(isinstance(5, SupportsAbs))   # → True
print(isinstance('abc', SupportsAbs))  # → False
from typing import SupportsAbs
class Money: __abs__ = lambda self: 42
print(isinstance(Money(), SupportsAbs))  # → True
print(abs(Money()))  # → 42
print(issubclass(complex, SupportsAbs))  # → True

См. также

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