pythonは型ヒントを無視するのでこうなるしかないんですけど どうしてもオーバーロードするなら自分で型を判定する ていうかUnion型があるってことはもともとそういうものってことかな class Point: def __init__(self, x: Union[Tuple[float, float], float] = 0.0, y: float=0.0) -> None: if isinstance(x, tuple): self.x = x[0] self.y = x[1] else: self.x = x self.y = y mypyは通った 動かす $ python3 -i shape.py >>> Point() Point(0.0, 0.0) >>> Point(1.0,2.0) Point(1.0, 2.0) >>> Point((2.0,4.0)) Point(2.