首页 > 解决方案 > 如何键入常量的并集

问题描述

我想做以下事情:

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'),我需要在两个不同的地方更改它似乎很奇怪。

处理这种情况的最佳方法是什么?

标签: pythontype-hintingpython-typing

解决方案


您几乎可以肯定只使用 anenum代替:

import enum

class ValidResponse(enum.Enum):
    YES = 1
    NO = 0

现在您可以ValidResponse用作注释:

def foo(response: ValidResponse) -> whatever:
    # do something with response

推荐阅读