typing: 定义一个只能是某些字符串的类型?
typing: Define a type that can only be certain strings?
如何使用 typing 模块来创建可以是特定字符串的类型?
例如假设我需要一个类型 CondOperator
,它可以是这些字符串中的任何一个:
['=', '>', '<', '>=', '<=', '<>', '!=']
我希望 CondOperator = String['=', '>', '<', '>=', '<=', '<>', '!=']
,但 typing
中没有 String
。所以这行不通。
如何定义这样的类型?
Python 3.8 在typing
中引入了Literal
类型。它也可以通过 Python 以前版本中的 typing_extensions
包访问。使用 Literal
,您可以将类型定义为:
from typing import Literal
CondOperator = Literal['=', '>', '<', '>=', '<=', '<>', '!=']
Literal
上的 mypy docs 值得一读。
如何使用 typing 模块来创建可以是特定字符串的类型?
例如假设我需要一个类型 CondOperator
,它可以是这些字符串中的任何一个:
['=', '>', '<', '>=', '<=', '<>', '!=']
我希望 CondOperator = String['=', '>', '<', '>=', '<=', '<>', '!=']
,但 typing
中没有 String
。所以这行不通。
如何定义这样的类型?
Python 3.8 在typing
中引入了Literal
类型。它也可以通过 Python 以前版本中的 typing_extensions
包访问。使用 Literal
,您可以将类型定义为:
from typing import Literal
CondOperator = Literal['=', '>', '<', '>=', '<=', '<>', '!=']
Literal
上的 mypy docs 值得一读。