[英]How to show documentation of a module and sub class to a user in python
我正在嘗試編寫具有兩個類的模塊。 第一類稱為TextProcessing
class TextProcessing(object):
""" To carry out text processing
"""
def __init__(self,):
pass
它具有用於預處理文本的各種方法。
類似地,其他類用於處理預處理數據的其他數據。
我將這兩個類保存在python文件中以使其成為模塊。
現在,假設用戶下載了這個python模塊,現在想運行每個類的各種方法。
我想為用戶在導入模塊時向其提供有關該模塊,每個類的方法的某種文檔,以便她知道要調用的函數以及要傳遞的參數。
考慮一下scikit如何在其文檔頁面上學習文檔。
甚至當我們這樣做時,我們也會看到文檔
help(some_python_module)
也可以
問題是我沒有像sklearn這樣的文檔頁面來顯示文檔。 而且我希望用戶知道將其導入python控制台后可以使用的各種方法的文檔。
用戶導入模塊時,有什么方法可以將文檔信息打印到控制台?
它可以顯示每個類和方法的文檔字符串。
這是一件很奇怪的事情,但是絕對有可能 。
最簡單的方法就是致電help
。 雖然打算從交互式提示中調用它,但沒有什么能阻止您從自己的代碼中調用它。
當然,您可以提取文檔字符串(它們以__doc__
形式存儲在每個模塊,類和函數中),自己進行自動textwrap
,然后將其print
輸出,但是如果您要復制與help
相同的內容,那大量工作沒有任何實際好處。
唯一棘手的一點是,您要在其上調用幫助系統的是“當前模塊”。 您如何指代呢? 這有點笨拙,但是您將當前模塊的名稱命名為__name__
,因此可以在sys.modules
進行查找。
所以:
"""Helpful module"""
import sys
class Spam:
"""Classy class"""
def eggs(self):
"Functional function"
return 2
help(sys.modules[__name__])
現在,在會話中首次import helpful
時,它將打印出help
。
當然,如果有人嘗試運行對import helpful
的腳本,而不是從交互式會話中進行import helpful
,那將是很奇怪的。 因此,您可能只想通過檢查sys.flags
在交互式會話中執行此sys.flags
:
if sys.flags.interactive:
help(sys.modules[__name__])
如果有人做了import otherthing
,而otherthing
做的import helpful
? 您將獲得相同的幫助,這可能會造成混淆。
如果這是一個問題,我唯一想到的真正的選擇就是檢查調用框架是否來自頂級腳本(並且這些標志是交互式的)。 那是很棘手的事情,除非真正需要,否則您甚至都不應該考慮這一點,因此,我將指導您進入inspect
模塊,並希望您不需要它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.