Skip to content

Instantly share code, notes, and snippets.

@raeq
raeq / method_overloading.py
Last active May 2, 2021
method_overloading
View method_overloading.py
from functools import singledispatchmethod
class Dog:
@singledispatchmethod
def bark(self, quality):
raise NotImplementedError
@bark.register
View which_dispatcher.py
from functools import singledispatch
@singledispatch
def fancy_print(s):
raise NotImplementedError
@fancy_print.register(int)
def _ints(s):
@raeq
raeq / which_dispatcher.py
Created May 2, 2021
Which dispatcher will be called
View which_dispatcher.py
from functools import singledispatch
@singledispatch
def fancy_print(s):
raise NotImplementedError
@fancy_print.register(int)
def _ints(s):
View with_overloading_annotations_01.py
from functools import singledispatch
@singledispatch
def area(any_object):
raise NotImplementedError
@area.register
def _(any_object: Circle):
return math.pi * (math.pow(any_object.radius, 2))
@raeq
raeq / with_overloading.py
Last active May 2, 2021
Worked example of overloading
View with_overloading.py
import math
from functools import singledispatch
class Square:
length: int
def __init__(self, length=0):
self.length = length
@raeq
raeq / with_overloading.py
Last active May 2, 2021
A simple overload using singledispatch
View with_overloading.py
from functools import singledispatch
@singledispatch
def area(any_object):
raise NotImplementedError
@area.register(Circle)
def _(any_object):
return math.pi * (math.pow(any_object.radius, 2))
View example_04.py
import math
class Square:
length: int
def __init__(self, length=0):
self.length = length
View example_03.py
my_circle = Circle(6)
my_square = Square(12)
print(area(my_circle))
print(area(my_square))
@raeq
raeq / example_02.py
Created May 2, 2021
Calculate the area of circles or squares.
View example_02.py
def area(any_object):
if isinstance(any_object, Circle):
return math.pi * (math.pow(any_object.radius, 2))
elif isinstance(any_object, Square):
return (math.pow(any_object.length, 2))
@raeq
raeq / example_01.py
Created May 2, 2021
Square and Circle
View example_01.py
import math
class Square:
length: int
def __init__(self, length=0):
self.length = length