Raymond Hettinger <raymond.hettin...@gmail.com> 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 <rep...@bugs.python.org> <https://bugs.python.org/issue43602> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com