(For guys who got here by googling or else..)
Just use Pydantic or such tools.. & take a look to singledispatchsingledispatch for some cases:
from functools import singledispatch
@singledispatch
def process(value):
raise NotImplementedError(f"Unsupported type: {type(value)}")
@process.register
def _(value: int):
return f"Processing integer: {value}"
@process.register
def _(value: float):
return f"Processing float: {value}"
@process.register
def _(value: str):
return f"Processing string: {value}"
if __name__ == `__main__`"__main__":
print(process(10)) # out: Processing integer: 10
print(process(10.5)) # out: Processing float: 10.5
print(process("Hello")) # out: Processing string: Hello