如何从typing
得到Literal[]
的文本值?你知道吗
from typing import Literal, Union
Add = Literal['add']
Multiply = Literal['mul']
Action = Union[Add,Multiply]
def do(a: Action):
if a == Add:
print("Adding!")
elif a == Multiply:
print("Multiplying!")
else:
raise ValueError
do('add')
上面的代码检查类型,因为'add'
是Literal['add']
类型,但在运行时,由于字符串'add'
与typing.Literal['add']
不同,因此会引发ValueError。你知道吗
如何在运行时重用在类型级别定义的文本?你知道吗
typing
模块提供了一个函数get_args
,用于检索初始化Literal
的参数。你知道吗然而,我不认为你用
Literal
来表达你的建议会有所收获。对我来说更有意义的是使用字符串本身,然后可能定义一个Literal
,以便非常严格地验证参数是否属于这组字符串。你知道吗请记住,类型注释本质上是一个专门的类型定义,而不是一个值。它限制允许哪些值通过,但它本身只实现了一个约束—一个过滤器,它拒绝您不希望允许的值。如上所述,它的参数是一组允许的值,因此约束本身仅指定它将接受哪些值,而实际值只有在您具体使用它来验证值时才会出现。你知道吗
相关问题 更多 >
编程相关推荐