也许是一个愚蠢的问题:
编写C扩展名时,如何为特殊功能(如__init__)指定docstring?
对于普通方法,方法表中提供了文档字符串。当我尝试使用help(myclass)时,将显示以下自动生成的文档:

  __init__(...)
      x.__init__(...) initializes x; see help(type(x)) for signature

但这是我要覆盖的内容。

最佳答案

我认为最常见的做法是将各种函数的定义粘贴到tp_doc中,然后将其保留。然后,您可以按照说明进行操作,然后查看对象的文档。这就是整个标准库中发生的事情。

您实际上没有任何选择可以在各个插槽(__doc__等)上写tp_init,因为在您调用wrapper_descriptor时,它们由PyType_Ready包装,并且wrapper_descriptor上的文档字符串是只读的。

我认为可以跳过使用插槽并将您的方法(例如__init__)添加到MemberDefs,但是我从未尝试过。

关于python - 如何在Python C扩展中为__init__指定docstring,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11913492/

10-09 02:47