from functools import singledispatchmethod, singledispatch
class Foo:
@singledispatchmethod
def add(self, *args):
res = 0
for x in args:
res += x
print(res)
@add.register(str)
def _(self, *args):
string = ' '.join(args)
print(string)
@add.register(list)
def _(self, *args):
myList = []
for x in args:
myList += x
print(myList)
obj = Foo()
obj.add(1, 2, 3)
obj.add('I', 'love', 'Python')
obj.add([1, 2], [3, 4], [5, 6])
from datetime import date, time
@singledispatch
def format(arg):
print(arg)
@format.register
def _(arg: date):
print(f"{arg.day}-{arg.month}-{arg.year}")
@format.register(time)
def _(arg):
print(f"{arg.hour}:{arg.minute}:{arg.second}")
format("today")
format(date(2021, 5, 26))
format(time(19, 22, 15))