Skip to content

Instantly share code, notes, and snippets.

@raeq
Last active May 2, 2021 21:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save raeq/fbc0762adeae4a7243d2ecd68456e022 to your computer and use it in GitHub Desktop.
Save raeq/fbc0762adeae4a7243d2ecd68456e022 to your computer and use it in GitHub Desktop.
method_overloading
from functools import singledispatchmethod
class Dog:
@singledispatchmethod
def bark(self, quality):
raise NotImplementedError
@bark.register
def _bark_with_int(self, quality: int):
return "BARK " * quality
@bark.register
def _bark_with_str(self, quality: str):
if "loud" in quality.lower():
return "LOUD BARK"
if "quiet" in quality.lower():
return "quiet bark"
return "A Bark"
print(Dog().bark(5))
print(Dog().bark("quiet"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment