【问题标题】:How do I use string-literal type annotations for multiple possible argument types?如何为多种可能的参数类型使用字符串文字类型注释?
【发布时间】:2019-05-20 10:18:25
【问题描述】:

我们可以使用对象作为类型注解:

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)

如果我们使用字符串字面量,这相当于什么?有没有一种语法允许我在如此复杂的情况下使用字符串文字?

【问题讨论】:

  • 顺便说一句,你是指最后一种情况下的List[Union[int, str]]吗?
  • @gmds 我想是的,所以我更新了它。

标签: python type-annotation


【解决方案1】:

你仍然只是在它周围加上引号:

from typing import Union

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

【讨论】:

  • @multigoodverse:您仍然需要导入您正在使用的工具以了解 Union 是什么(如果您没有使用任何需要了解注释含义的工具,那么使用注释没有什么意义)。
猜你喜欢
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 2021-10-13
  • 1970-01-01
  • 2021-08-02
  • 2021-09-04
相关资源
最近更新 更多