Raymond Hettinger <[email protected]> added the comment:
We don't have a choice here. Operations between decimals and floats raise a
TypeError. So, we can't register Decimal as a Real; otherwise, static type
checking wouldn't be able to flag the following as invalid:
def add(a: Real, b: Real) -> Real:
return a + b
a: Real = Decimal('1.1')
b: Real = 2.2
print(add(a, b))
This gives:
Traceback (most recent call last):
File "/Users/raymond/Documents/tmp.py", line 10, in <module>
print(add(a, b))
File "/Users/raymond/Documents/tmp.py", line 6, in add
return a + b
TypeError: unsupported operand type(s) for +: 'decimal.Decimal' and 'float'
Almost the whole point of static checking is early detection of these problems
so we won't encounter the TypeError at runtime.
P.S. With respect to #4, we've harmonized the APIs as much as we sensibly can.
That allows some code to be more polymorphic as long at the type is consistent
throughout. That is much different than freely mixing floats and decimals in
the direct interactions.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue43602>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com