How to type hint a generic numeric type in Python?
Solution 1
PEP 3141 added abstract base classes for numbers, so you could use:
from numbers import Number
def foo(a: Number) -> Number:
...
Solution 2
There isn't a generic numeric type in the typing
module, so you would have to create such a type with Union
instead:
from typing import Union
numeric = Union[int, float, complex]
...
To add support for Numpy's collection of numeric types, add np.number
to that Union.
numeric = Union[int, float, complex, np.number]
Francesco Boi
Interested in programming, electronic, math, physics and technology. In my free-time I like playing sports, going to the sea, watching movies and reading.
Updated on June 03, 2022Comments
-
Francesco Boi about 2 years
Forgive me if this question has been asked before but I could not find any related answer.
Consider a function that takes a numerical type as input parameter:
def foo(a): return ((a+1)*2)**4;
This works with integers, floats and complex numbers.
Is there a basic type so that I can do a type hinting (of a real existing type/base class), such as:
def foo(a: numeric): return ((a+1)*2)**4;
Furthermore I need to use this in a collection type parameter, such as:
from typing import Collection; def foo(_in: Collection[numeric]): return ((_in[0]+_in[1])*2)**4;