如何手动设置python可调用项的签名

如何手动设置python可调用项的签名,python,python-3.6,signature,pybind11,python-jedi,Python,Python 3.6,Signature,Pybind11,Python Jedi,我想使用提供pybind11模块的代码完成。绝地评估可调用项的签名是否完整。有关详细信息,请参阅:。但pybind11目前无法生成它们: 加载pybind11模块后,是否有办法使用python解释器手动设置可调用项(尤其是函数)的\uuuuuuuuu签名\uuuuuu?大概是这样的: pyModule.myFunc.\uuuuuu签名\uuuuuu=*在这里做一些魔术* 是否有一些工具可以生成python可调用函数的签名?有很多包可以在运行时动态创建函数,而CICH也可以创建签名。但这不是我的使

我想使用提供pybind11模块的代码完成。绝地评估可调用项的签名是否完整。有关详细信息,请参阅:。但pybind11目前无法生成它们:

加载pybind11模块后,是否有办法使用python解释器手动设置可调用项(尤其是函数)的
\uuuuuuuuu签名\uuuuuu
?大概是这样的:

pyModule.myFunc.\uuuuuu签名\uuuuuu=*在这里做一些魔术*


是否有一些工具可以生成python可调用函数的签名?有很多包可以在运行时动态创建函数,而CICH也可以创建签名。但这不是我的使用案例。

我没有用绝地武士来测试这一点,因为看起来要进行可靠的设置和复制需要做很多工作,但也许下面的工作已经可以了

检查可调用签名的规范方法是恰当命名的函数。它依赖于magic
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu注释
属性,该属性可以在运行时修改:

来自检查导入签名的
>>
>>>def foo(巴):
...     返回真值
... 
>>>签名(foo)
#空签名
>>>导入键入
>>>foo.\uuuu注释{'bar':typing.Union[bool,None],'return':bool}
>>>签名(foo)
bool>#现在包含我们添加的信息

由于
\uuuuu签名\uuuuu
不是一个标准字段,它可能是由绝地生成的,他们在中的问题描述也暗示他们更愿意直接利用
检查.signature

我用绝地对它进行了测试,它适用于pybind11函数的返回类型,但不适用于它们的参数。如果在设置注释后检查pybind11函数签名,则会得到预期的签名对象。但看来绝地武士不明白。也许这个方法对于解决我的完成问题不是一个好主意。如果我必须手动添加注释,我认为生成存根文件(如绝地版中讨论的)要好得多。但非常感谢您的投入,让我得出结论。没问题,我同意存根文件听起来是一个更好的解决方案。好运=)