Python Glossary English

Python 3.5+typingпонятие

typing.SupportsFloat

протоколы Supports*

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

Синтаксис

isinstance(obj, typing.SupportsFloat)

Ловушка: str не реализует __float__ — float('3.14') разбирает строку отдельным путём, поэтому isinstance('3.14', SupportsFloat) даёт False. А int, bool и Decimal протокол проходят: у них __float__ есть.

Примеры

from typing import SupportsFloat
print(isinstance(5, SupportsFloat))   # → True
print(isinstance('3.14', SupportsFloat))  # → False
print(issubclass(complex, SupportsFloat))  # → False
from typing import SupportsFloat
class Celsius: __float__ = lambda self: 36.6
print(isinstance(Celsius(), SupportsFloat))  # → True
print(float(Celsius()))  # → 36.6

См. также

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