2012-08-11 32 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

相關問題