Python Glossary English

Python 3.5+typingпонятие

typing.SupportsBytes

протоколы Supports*

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

Синтаксис

isinstance(obj, typing.SupportsBytes)

Ловушка: bytes() принимает и int (bytes(5) → пять нулевых байт), и iterable целых (bytes([1,2,3])), но ни int, ни list не имеют __bytes__ — isinstance(5, SupportsBytes) и isinstance([1,2,3], SupportsBytes) дают False. Протокол ловит лишь объекты с явным __bytes__, а не всё, что удаётся скормить bytes().

Примеры

from typing import SupportsBytes
class B:
    def __bytes__(self): return b''
print(isinstance(B(), SupportsBytes))   # → True

См. также

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