Python Glossary Русский

Python 3.5+typingterm

typing.SupportsFloat

Supports* protocols

A runtime-checkable protocol for objects supporting float() (has __float__).

Syntax

isinstance(obj, typing.SupportsFloat)

Gotcha: str has no __float__ — float('3.14') parses the string through a separate path, so isinstance('3.14', SupportsFloat) is False. But int, bool and Decimal pass, since they do define __float__.

Examples

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

See also

Open in the full glossarydocs.python.orgReport an inaccuracy