给出以下示例:
from typing import Literal
from dataclasses import dataclass
@dataclass
Class Example:
answer: Literal['Y', 'N']
x = Example('N')
field = fields(x)[0]
如何检查变量字段的类型为Literal? issubclass(field.type, Literal)
似乎不起作用。
然后我该如何从list ['Y', 'N']
中获取field.type
,以便可以在运行时检查该值并在fail = Example('invalid')
时引发错误
pydantic
这样做,但是您必须使用他们在数据类中的放置权...
Literal
不是python对象在运行时将具有的普通类型,检查对象是否为Literal
]没有意义。
您可以使用__annotations__
来访问课程的注释,下面是您的示例:
>>> Example.__annotations__['answer'].__args__
('Y', 'N')