kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

実験:関数オーバーロード

せっかく型情報つけるんだから関数がオーバーロードできるといいなあ

def add1(a: int) -> int:
    return a + 1

def add1(a: str) -> str:
    return a + "1"

print(add1(3))
print(adds1("3"))

当然ダメ

$ python3 overload.py
Traceback (most recent call last):
  File "/Users/takahiro/study/PCAD/overload.py", line 9, in <module>
    print(add1(3))
  File "/Users/takahiro/study/PCAD/overload.py", line 6, in add1
    return a + "1"
TypeError: unsupported operand type(s) for +: 'int' and 'str'

mypyも文句言う

$ mypy overload.py
overload.py:4: error: Name 'add1' already defined on line 1
overload.py:8: error: Name 'adds1' is not defined

pythonは型ヒントを無視するのでこうなるしかないんですけど
残念