2012-08-11 31 views
9

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

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

但是,这是我要重写的。

回答

1

我认为最常见的做法是将各种功能的定义粘贴到tp_doc中,并将其留在那里。然后你可以按照说的去做,看看你的对象的文档。这就是标准库中发生的情况。

你真的没有写作__doc__对各种插槽的任何选项(tp_init等),因为它们是由一个wrapper_descriptor包裹,当你调用PyType_Ready,并在wrapper_descriptor文档字符串是只读的。

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

+1

看起来就是这样。我已经尝试在PyMethoDef数组中放入\ _ \ _ init \ _ \ _。虽然它不会造成任何伤害,但解释器会忽略我提供的文档字符串。 – subhacom 2012-08-19 10:38:18

相关问题