从python版本3.5开始,您可以使用类型提示来指示函数期望的参数类型.我发现这些类型提示对于文档目的非常有价值,所以我尝试尽可能多地使用它们.它们还有助于linter,因此可以定期使我免受代码更改引入的错误的影响.
例如,在我的代码中,我有一些函数将零参数函数作为参数.例如:
def onReady(f: Callable[[], Any]) -> None:
...
Run Code Online (Sandbox Code Playgroud)
要么
def checkIfReady(f: Callable[[], Bool]) -> None:
...
Run Code Online (Sandbox Code Playgroud)
我想做的是创建一个类似的别名(下面的代码是无效的python):
Action[A] = Callable[[], A]
Run Code Online (Sandbox Code Playgroud)
然后我可以缩短上面参数的类型:
def onReady(f: Action[Any]) -> None:
...
Run Code Online (Sandbox Code Playgroud)
我知道我可以为特定实例创建一个类型别名,例如:
ActionBool = Callable[[], bool]
Run Code Online (Sandbox Code Playgroud)
我知道是否存在等的NewType中typing的模块,但这些都不似乎推广到更高阶的类型.
我想我已经找到了最简单的解决方案。根据PEP 484,这是有效的:
T = TypeVar('T') # or TypeVar('T', int, float, bool, str)
Action = Callable[[], T]
def onReady(f: Action[Any]) -> None:
pass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |