确定对象是否为 typing.Literal 类型
Determining if object is of typing.Literal type
我需要检查对象是否是 typing.Literal 的后代,我有这样的注释:
GameState: Literal['start', 'stop']
我需要检查 GameState
注释类型:
def parse_values(ann)
if isinstance(ann, str):
# do sth
if isinstance(ann, int):
# do sth
if isinstance(ann, Literal):
# do sth
但它会导致错误,所以我将最后一个交换为:
if type(ann) == Literal:
# do sth
但从来没有 returns 是的,所以有人知道解决这个问题的方法吗?
您应该与 <class 'typing._LiteralGenericAlias'>
比较:
from typing import _LiteralGenericAlias
if type(GameState) == _LiteralGenericAlias:
#do something
typing.get_origin()
returns Literal
对于字面后代,做我需要的基本上就是
if get_origin(GameState) == Literal:
# do sth
我需要检查对象是否是 typing.Literal 的后代,我有这样的注释:
GameState: Literal['start', 'stop']
我需要检查 GameState
注释类型:
def parse_values(ann)
if isinstance(ann, str):
# do sth
if isinstance(ann, int):
# do sth
if isinstance(ann, Literal):
# do sth
但它会导致错误,所以我将最后一个交换为:
if type(ann) == Literal:
# do sth
但从来没有 returns 是的,所以有人知道解决这个问题的方法吗?
您应该与 <class 'typing._LiteralGenericAlias'>
比较:
from typing import _LiteralGenericAlias
if type(GameState) == _LiteralGenericAlias:
#do something
typing.get_origin()
returns Literal
对于字面后代,做我需要的基本上就是
if get_origin(GameState) == Literal:
# do sth