Python 键入:给定的一组值
Python Typing: Given Set of Values
我想将方法的参数键入为一组有限的有效值之一。所以基本上,我想要 typing
相当于以下最小示例:
valid_parameters = ["value", "other value"]
def typed_method(parameter):
if not parameter in valid_parameters:
raise ValueError("invalid parameter")
我已经检查了 typing
,但我没有设法找到解决方案。也许我只是无法完全理解文档。有这样的解决方案吗?可以创建吗?
Python 3.8 中引入了此功能:typing.Literal
. See PEP 586 了解详情。
示例:
def typed_method(parameter: Literal["value", "other value"]):
pass
I want to type the parameter of a method to be one of a finite set of valid values
使用枚举
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
def handle_color(color):
if not isinstance(color, Color):
raise ValueError('Not a color')
print(color)
handle_color(Color.GREEN)
handle_color('something')
我想将方法的参数键入为一组有限的有效值之一。所以基本上,我想要 typing
相当于以下最小示例:
valid_parameters = ["value", "other value"]
def typed_method(parameter):
if not parameter in valid_parameters:
raise ValueError("invalid parameter")
我已经检查了 typing
,但我没有设法找到解决方案。也许我只是无法完全理解文档。有这样的解决方案吗?可以创建吗?
Python 3.8 中引入了此功能:typing.Literal
. See PEP 586 了解详情。
示例:
def typed_method(parameter: Literal["value", "other value"]):
pass
I want to type the parameter of a method to be one of a finite set of valid values
使用枚举
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
def handle_color(color):
if not isinstance(color, Color):
raise ValueError('Not a color')
print(color)
handle_color(Color.GREEN)
handle_color('something')