Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 键入:定义只能是特定字符串的类型?_Python_Python 3.x_Typing - Fatal编程技术网

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。我认为这不正确-文档清楚地显示了文本变量和函数参数的类型。