Skip to content

Instantly share code, notes, and snippets.

@adililhan
Created December 4, 2021 20:26
Show Gist options
  • Save adililhan/c4c50608a9c12e9e625fadbe4873a871 to your computer and use it in GitHub Desktop.
Save adililhan/c4c50608a9c12e9e625fadbe4873a871 to your computer and use it in GitHub Desktop.
Constructor overloading in Python 3.8 and Afterwards
import functools
class Computer:
@functools.singledispatchmethod
def __init__(self, *parts):
self.parts = " *** ".join(parts)
@__init__.register
def _(self, parts: dict):
self.parts = parts.items()
@__init__.register
def _(self, parts: list):
self.parts = " - ".join(parts)
@__init__.register
def _(self, parts: int):
self.parts = parts
def get_parts(self):
return self.parts
pc1 = Computer("BIOS", "Power supply")
pc2 = Computer({"CPU": "3.0GHz", "RAM": "32GB"})
pc3 = Computer(["CPU", "RAM", "SSD"])
pc4 = Computer("Motherboard")
pc5 = Computer(99999)
print(pc1.get_parts())
print(pc2.get_parts())
print(pc3.get_parts())
print(pc4.get_parts())
print(pc5.get_parts())
@adililhan
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment