也许是一个愚蠢的问题:
编写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/