Function overloading with singledispatch-functools
Single-dispatch generic function decorator transforms a function into a generic function, which can have different behaviours depending upon the type of its first argument. The decorated function acts as the default implementation. To add overloaded implementations to the function, use the register() attribute of the generic function. It is a decorator, taking a type parameter and decorating a function implementing the operation for that type.
Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.
To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning - Basic Level Course
Where there is no registered implementation for a specific type, its method resolution order is used to find a more generic implementation. The original function decorated with @singledispatch is registered for the base object type, which means it is used if no better implementation is found.
GeeksforGeeks 20 0 g 1 e 2 e 3 k 4 s
The singledispatch decorator also supports decorator stacking. This allows us to create an overloaded function that can handle multiple types. Example –
dispatch() – To check which implementation will the generic function choose for a given type.
<function fun at 0x0000022CFE62C7B8> <function _2 at 0x0000022CFE77BA60>
registry() – read-only attribute to access all registered implementations.
dict_keys([<class 'object'>, <class 'int'>, <class 'list'>]) <function _1 at 0x0000018E5480B9D8> <function fun at 0x0000018E546BC7B8>