python - 如何键入常量的并集
问题描述
我想做以下事情:
from typing import Union, Literal
YES = 1
NO = 0
ValidResponse = Union[Literal[YES], Literal[NO]]
当然,Python 不会让我这样做,因为YES
并且NO
被认为是变量,而不是文字数字。
显然我可以做到ValidResponse = Union[Literal[1], Literal[0]]
,但是作为以后编辑此文件的程序员,为了更改YES
使用的常量(例如YES = 'yes'
),我需要在两个不同的地方更改它似乎很奇怪。
处理这种情况的最佳方法是什么?
解决方案
您几乎可以肯定只使用 anenum
代替:
import enum
class ValidResponse(enum.Enum):
YES = 1
NO = 0
现在您可以ValidResponse
用作注释:
def foo(response: ValidResponse) -> whatever:
# do something with response
推荐阅读
- html - bootstrap 4.1 移动菜单按钮不起作用
- c++ - std::vector erase() 没有按预期工作
- java - 如何使用 Java Optional 优雅地替换三元运算符
- azure-devops - Azure DevOps 分支策略路径筛选器,用于检测项目根文件夹中的更改
- java - 如何为tomcat webapps配置设置正确的windows路径
- java - Gradle:无法创建 SecurityManager
- html - Rowspan 属性不适用于倒排表
- perforce - 如何 p4 在不同的客户端取消搁置但保持相同的搁置 CL?
- java - java泛型多类边界
- r - 如何有效地强制多个数据框共享的列属于同一类类型