Vla*_*tin 10 python type-hinting
比方说,我有一个函数,它有一个与方法名称对应的字符串参数:
def func(method: str):
if method not in ('simple_method', 'some_other_method'):
raise ValueError('Unknown method')
Run Code Online (Sandbox Code Playgroud)
我可以添加所有可能支持的选项(字符串)作为此参数的类型提示吗?例如,像这样的东西(因为打字时没有 Str,所以不起作用):
from typing import Str
def func(method: Str['simple_method', 'some_other_method']):
...
Run Code Online (Sandbox Code Playgroud)
Owl*_*lzy 11
仅使用类型提示是不可能的,正确的方法应该是使用像这样的枚举:
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
Run Code Online (Sandbox Code Playgroud)
一旦您拥有一个包含所有可能选择的枚举,您就可以提示该函数以仅接受您的自定义枚举。更多信息在这里
例子:
from typing import NewType
Colors = NewType('Colors', Color)
Run Code Online (Sandbox Code Playgroud)