11

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

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

但这是我想要覆盖的。

4

1 回答 1

1

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

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

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

于 2012-08-19T04:58:12.097 回答