【问题标题】:How to specify docstring for __init__ in Python C extension如何在 Python C 扩展中为 __init__ 指定文档字符串
【发布时间】:2012-08-11 09:27:33
【问题描述】:

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

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

但这是我想要覆盖的。

【问题讨论】:

    标签: python python-c-api docstring python-extensions


    【解决方案1】:

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

    您实际上没有任何选项可以在各个插槽(tp_init 等)上写入 __doc__,因为当您调用 PyType_Ready 时它们被 wrapper_descriptor 包裹,而文档字符串位于wrapper_descriptor 是只读的。

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

    【讨论】:

    • 看起来是这样的。我已经尝试将 __init__ 放入 PyMethoDef 数组中。虽然把它放在那里没有任何害处,但解释器会忽略我提供的文档字符串。
    猜你喜欢
    • 2011-09-09
    • 2015-08-29
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多