Skip to the content.

Type Hint for Union Types

Recipes

Python 3.10+

x1: int | str
x2: int | None

isinstance(5, int | str)
issubclass(bool, int | float)

Python 3.6-3.9

# PEP 604, Allow writing union types as X | Y
from __future__ import annotations


x1: int | str
x2: int | None

isinstance(5, int | str)
issubclass(bool, int | float)

simplified:

from typing import Union, Optional


x1: Union[int, str]
x2: Optional[int]  # equivalent to Union[int, None].
x2: Optional[int, str]  # fails: Only one argument(type) accepted.

isinstance(5, (int, str))
issubclass(bool, (int, float))

More Details

References