Python C API 函数参数

Python C API function arguments

如何使用 C API 为具有指定参数的 class 定义函数或构造函数?

默认情况下函数接受 PyObject* 个参数,稍后在代码中 linter 不会显示真正的参数。

如果不行,有没有办法绕过?我想出了两个可能的选择:

  1. 将每个函数包装在 python 代码中

    def f(x: int, y: int) -> int:
        return _c_module(x, y)
    
  2. 也许 .pyi 文件可以解决问题(?)

最好的方法是使用 .pyi 文件并将它们与您的包一起分发(查看 docs),即如果您有一个模块 my_mod class Baz 与成员 foo 和方法 bar,那么你会希望 my_mod.pyi 像这样:

class Baz:
    foo: float

    def bar(self, param_a: str, default_one: int = ...) -> str:
        pass

然后大多数 linters、类型检查器等都会捕捉到它并使用它。

另外:about stubs from mypy.