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