There times in python’s land when you needs to have different kind of behaviour for a function depending upon the type of arguments.
Decorator singledispatch from functools module from python 3.4 can help us out to create a different definitions of a with common interface.
we can define a generic definition of a function and can call same function with different set of arguments type:
fun("python land")
fun(23, True)
fun([11, 22, 33])
fun(object())
This is how a generic function will look:
from functools import singledispatch
@singledispatch
def fun(arg, verbose=False):
if verbose:
print("verbosing....")
print(arg)
Now different behaviour can be defined for this generic function
@fun.register(int)
def fun_int(arg, verbose=False):
if verbose:
print("numbers: ", end=" ")
print(arg)
@fun.register(list)
def fun_list(arg, verbose=False):
if verbose:
print("Enumerate this:")
print([ele+1 for ele in arg])
@fun.register(object)
def fun_int(arg):
print(arg.__class__)
source code can be found here
Hope you liked the article, keep reading.
No comments:
Post a Comment