Python 键入:定义只能是特定字符串的类型?
如何使用键入模块创建可以是特定字符串的类型 例如,假设我需要一个类型Python 键入:定义只能是特定字符串的类型?,python,python-3.x,typing,Python,Python 3.x,Typing,如何使用键入模块创建可以是特定字符串的类型 例如,假设我需要一个类型CondOperator,它可以是以下任意字符串: ['=', '>', '<', '>=', '<=', '<>', '!='] Python 3.8在typing中引入了Literal类型。在早期版本的Python中,还可以通过typing_extensions包访问该类型。使用Literal,您可以将类型定义为: 从输入import Literal开始 conoperator=Lite
CondOperator
,它可以是以下任意字符串:
['=', '>', '<', '>=', '<=', '<>', '!=']
Python 3.8在typing
中引入了Literal
类型。在早期版本的Python中,还可以通过typing_extensions
包访问该类型。使用Literal
,您可以将类型定义为:
从输入import Literal开始
conoperator=Literal['=','>','=','键入
是错误的工具。您试图检查字符串的值,而不是类型。如果您想要类型安全,请使用枚举。@user2357112supportsMonica您可以通过将x
显式标记为Literal来强制它为Literal(x:CondOperator='>'
或x:Literal['>']='>'
),或将其标记为final(x:final='>'
)。无论哪种方式,如果将x
馈送给接受CondOperator
@user2357112的函数,它都会键入check。我认为这不正确-文档清楚地显示了文本变量和函数参数的类型。