Pro*_*o Q 1 python type-hinting python-typing
我想做以下事情:
from typing import Union, Literal
YES = 1
NO = 0
ValidResponse = Union[Literal[YES], Literal[NO]]
Run Code Online (Sandbox Code Playgroud)
当然,Python 不会让我这样做,因为YES和NO被认为是变量,而不是文字数字。
显然我可以做到ValidResponse = Union[Literal[1], Literal[0]],但作为稍后编辑此文件的程序员,为了更改YES使用的常量(例如YES = 'yes'),我需要在两个不同的地方更改它,这似乎很奇怪。
处理这种情况的最佳方法是什么?
你几乎肯定应该使用一个enum代替:
import enum
class ValidResponse(enum.Enum):
YES = 1
NO = 0
Run Code Online (Sandbox Code Playgroud)
现在您可以用作ValidResponse注释:
def foo(response: ValidResponse) -> whatever:
# do something with response
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1430 次 |
| 最近记录: |