使用 db-api 进行 Python 类型提示

Ste*_*tef 5 python interface type-hinting

我想添加 db-api 类型提示,例如:

def test_connect() -> Connection :
...
Run Code Online (Sandbox Code Playgroud)

知道我正在动态加载模块驱动程序(意思是,没有像“pyodbc.Connection”这样的硬编码),并且在 Python 中没有正式的接口契约。

任何的想法 ?

Mic*_*x2a 4

您可能想在这里使用协议

简而言之,您在代码库中定义一个自定义协议,其中包含任何“连接”对象必须具有的方法的签名。然后,您可以自由返回任何任意对象,只要它包含具有指定方法的方法即可。

最后说明:我知道 mypy 支持协议,但我不确定其他类型检查器是否支持。有一个开放的 PEP可以正式将协议引入 Python 类型生态系统——一旦 PEP 被接受,其他类型检查器可能会添加对协议的支持(如果他们还没有的话)。

  • PEP 544 已被接受,现在是 Python 3.8+ 的标准。 (2认同)