Как использовать строковые литеральные аннотации для нескольких возможных типов аргументов? - PullRequest
2 голосов
/ 20 мая 2019

Мы можем использовать объекты в качестве аннотаций типов:

def foo(a: int) -> str:
    return str(a)

Мы также можем использовать строковые литералы в качестве аннотаций типов:

def foo(a: "int") -> "str":
    return str(a)

Но как мы можем использовать строковые литералы для более сложных случаев, например, когда мы принимаем несколько типов аргументов? Если бы я использовал объекты, я бы сделал:

from typing import Union

def foo(a: Union[int, str]) -> str:
    return str(a)

Что эквивалентно этому, если мы использовали строковые литералы? Существует ли синтаксис, позволяющий мне использовать строковые литералы в таких сложных случаях?

1 Ответ

1 голос
/ 20 мая 2019

Вы все еще просто заключаете в кавычки:

from typing import Union

def foo(a: "Union[int, str]") -> "str":
    return str(a)
...