Typeguard provides this functionality: https://typeguard.readthedocs.io/en/latest/userguide.html
It's not perfect but that's because runtime type hints have lots of restrictions on what can be reasoned about them. But for simple and common cases it works very well. -- Damian (he / him) On Sun, Apr 25, 2021 at 9:38 AM Richard Damon <rich...@damon-family.org> wrote: > On 4/25/21 9:09 AM, Shreyan Avigyan wrote: > > Think it like this. We have this code in Python :- > > > > def add(a, b): > > return a + b > > > > Here we are taking two arguments a, b and then returning a + b. But we > can pass in instance of any class like str, int, float, dict, user-defined > class, etc. But we only want to add int here. Here we can modify it to be, > > > > def add(a, b): > > if type(a) == int and type(b) == int: > > return a +b > > raise Exception("Error") > > > > In this example it's pretty easy to check if the arguments are int. But > in real world programs as the functions become bigger and bigger it's very > difficult to check arguments using an if statement. Therefore why not let > the user specify what parameter types are gonna be? Like, > > > > def add(int a, int b): > > return a + b > > > > If instance of a different class is passed in then raise a TypeError > perhaps? If parameter types are not given then let the parameter accept any > kind of class instance. > > > > This kind of functionality will minimize a lot of if statements related > to parameter types and arguments. > > > > Thanking you, > > With Regards > > > Well, in Python with type annotations that would be spelled: > > def add(a: int, b: int): > > return a + b > > but the one difference is that, at least by default, that requirement is > advisorary only. You can run a static type checker like mypy at it will > see if it can deduce a case where you pass a non-int to the function. > > > You could also import a module into your module that will actually do > the check at run-time (I don't know of one, but there probably is one) > maybe needing the function to be decorated to request the type checking. > > -- > Richard Damon > > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/7DCIKCAQOD7FLC3SKYYGBDEHUOYBU472/ > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/GRKV76INWYQXSQ3DTSJFIXH4GLPY5UB6/ Code of Conduct: http://python.org/psf/codeofconduct/