numpy.lib.add_newdoc#
- lib.add_newdoc(place, obj, doc, warn_on_python=True)[原始碼]#
為現有物件新增文件,通常是 C 語言定義的物件
目的是允許更輕鬆地編輯 docstring,而無需重新編譯。這主要用於 NumPy 內部的用途。
- 參數:
- placestr
要從中匯入模組的絕對名稱
- objstr 或 None
要新增文件的物件名稱,通常是類別或函數名稱。
- doc{str, Tuple[str, str], List[Tuple[str, str]]}
如果是字串,則是要套用至 obj 的文件
如果是元組,則第一個元素會被解釋為 obj 的屬性,第二個元素是要套用的 docstring -
(方法, docstring)
如果是列表,則列表的每個元素都應該是長度為二的元組 -
[(方法1, docstring1), (方法2, docstring2), ...]
- warn_on_pythonbool
如果為 True(預設值),則當用於將文件附加到純 Python 物件時,發出 UserWarning。
註解
如果無法寫入 docstring,此常式永遠不會引發錯誤,但如果被記錄的物件不存在,則會引發錯誤。
此常式無法修改唯讀 docstring,如新式類別或內建函數中出現的 docstring。由於此常式永遠不會引發錯誤,因此呼叫者必須手動檢查 docstring 是否已變更。
由於此函數從 C 語言層級的 str 物件抓取
char *
,並將其放入 obj 類型的tp_doc
插槽中,因此它違反了許多 C-API 最佳實務,原因如下:在呼叫 PyType_Ready 之後修改 PyTypeObject
在 str 上呼叫 Py_INCREF 並遺失參考,因此 str 永遠不會被釋放
如果可能,應避免使用。