在python中,我可以使用typing模块为类型构造函数生成类型别名吗?

2024-05-19 22:26:47 发布

您现在位置:Python中文网/ 问答频道 /正文

从Python3.5版开始,您可以使用类型提示来指示函数所需的参数类型。我发现这些类型提示对于文档非常有价值,所以我尽量使用它们。它们也有助于提高效率,因此经常性地避免代码更改带来的bug。在

例如,在我的代码中,我有几个函数以零参数函数作为参数。E、 g.:

def onReady(f: Callable[[], Any]) -> None:
    ...

或者

^{pr2}$

我想做的是创建如下类型别名(下面的代码不是有效的python):

Action[A] = Callable[[], A]

然后我可以缩短我对上述论点的类型:

def onReady(f: Action[Any]) -> None:
    ...

我知道我可以为特定实例创建类型别名,例如:

ActionBool = Callable[[], bool]

我知道NewTypetyping模块中的存在,但这两个似乎都不能推广到高阶类型。在


Tags: 函数代码文档none类型参数defany
1条回答
网友
1楼 · 发布于 2024-05-19 22:26:47

我想我找到了最简单的解决办法。根据PEP 484,这是有效的:

T = TypeVar('T') #  or TypeVar('T', int, float, bool, str)
Action = Callable[[], T]
def onReady(f: Action[Any]) -> None:
    pass

相关问题 更多 >