# -*- encoding: utf-8 -*-
"""
@File: 123.py
@Time: 2021/3/22 14:54
@Author: cyl
"""
from typing import Any, overload
from functools import singledispatch, singledispatchmethod
@singledispatch
def fun(page: int) -> int:
return page + 100
@fun.register
def _(page: str) -> str:
return page + ", overload str"
@fun.register
def _(page: tuple) -> int:
return page[0] + page[1]
class Run:
def __init__(self):
self.name = ", cyl"
self.age = 0
self.width = 100
# def area(self, num: Any) -> Any:
# if isinstance(num, int):
# return num + self.width + 1
# if isinstance(num, str):
# return num + self.name + ", handsome"
# if isinstance(num, tuple):
# return num
@singledispatchmethod
def area(self, num: int) -> int:
return num + self.width
@area.register
def _(self, num: str, path: str) -> str:
return num + self.name + path
@area.register
def _(self, num: tuple) -> tuple:
return num
if __name__ == "__main__":
print(fun("123"))
print(fun(123))
print(fun((123, 456)))
print("*" * 30)
run: Run = Run()
print(run.area(100))
print(run.area("100", "hhh"))
print(run.area((100, 101)))
输出:
123, overload str
223
579
******************************
200
100, cylhhh
(100, 101)