【发布时间】:2017-02-14 10:25:27
【问题描述】:
我正在使用新的 Python 3.5 模块 typing,它很开心。
我想知道如何根据确切的字符串文字指定类型。例如,一个函数保证返回四个字符串之一 - “North”、“West”、“East”、“South - 我们如何将其表示为特定类型变量,而不仅仅是 str。
我查看了文档,找到了Union 类型和TypeVar 函数,但找不到答案。
表达此问题的示例函数:
def compute_quadrant(x: int, y: int) -> str:
if x > 0 and y > 0:
return 'I'
elif x < 0 and y > 0:
return 'II'
elif x < 0 and y < 0:
return 'III'
elif x > 0 and y < 0:
return 'IV'
我想返回一个更具体的类型,而不是只返回 str,它是四个值之一 - "I"、"II"、"III" 或 "IV"。
在 Typescript 中,可以这样做:type Quadrant = "I" | "II" | "III" | "IV" - 对于这个用例,typing 模块有什么好的 Python 糖吗?
【问题讨论】:
-
FWIW,有一个 discussion 关于添加仅代表几个特定值的类型。但可以肯定的是,在这种情况下没有必要这样做,因为
enum非常适合。
标签: python python-3.5 typing