对于枚举Foo
,一种类型如何提示必须包含某个枚举的成员值(而不是成员本身)的变量?例如,一个值使得Foo(x)
将返回Foo
的有效成员
以下是我的激励示例的简化版本:
class DisbursementType(Enum):
DISBURSEMENT = "disbursement"
REFUND = "refund"
ROLLBACK = "rollback"
class SerializedDisbursement(TypedDict):
transaction_type: ???
id: str
amount: float
a: SerializedDisbursement = {"transaction_type": "refund", id: 1, amount: 4400.24}
我真的希望避免简单地将transaction_type
键入Literal['disbursement', 'refund', 'rollback']
,因为随着时间的推移,这很容易失去同步
最广泛兼容的选项是只使用一个断言来验证文本类型是否与枚举值不同步:
这确保了与静态分析器的最大兼容性,但需要重复所有成员值。此外,不能静态检查断言
其他选项打破静态分析。例如,如果使用functional API从文字类型创建枚举:
然后mypydoesn't understand枚举,在这一点上,没有任何注释的意义
类似地,如果尝试对
Literal
类型使用非文字类型参数:然后that breaks too
相关问题 更多 >
编程相关推荐