簡體   English   中英

如何在python中向用戶顯示模塊和子類的文檔

[英]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如何在其文檔頁面上學習文檔。

http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfTransformer.html

甚至當我們這樣做時,我們也會看到文檔

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM