pyclbr — Python 模組瀏覽器支援

原始碼: Lib/pyclbr.py


pyclbr 模組提供關於 Python 編碼模組中定義的函式、類和方法的有限資訊。這些資訊足以實現一個模組瀏覽器。資訊是從 Python 原始碼中提取的,而不是透過匯入模組,因此該模組可以安全地用於不可信程式碼。此限制使得此模組無法用於未用 Python 實現的模組,包括所有標準和可選的擴充套件模組。

pyclbr.readmodule(module, path=None)

返回一個字典,將模組級類名對映到類描述符。如果可能,將包含匯入的基類的描述符。引數 module 是一個字串,包含要讀取的模組名稱;它可能是包內的模組名稱。如果給定,path 是一個目錄路徑序列,它會新增到 sys.path 的前面,用於定位模組原始碼。

此函式是原始介面,僅為向後相容性保留。它返回以下函式的過濾版本。

pyclbr.readmodule_ex(module, path=None)

返回一個基於字典的樹,其中包含模組中用 defclass 語句定義的每個函式和類的函式或類描述符。返回的字典將模組級函式和類名對映到它們的描述符。巢狀物件會新增到其父級的 children 字典中。與 readmodule 一樣,module 指定要讀取的模組,path 會新增到 sys.path 的前面。如果讀取的模組是一個包,則返回的字典會有一個鍵 '__path__',其值是一個包含包搜尋路徑的列表。

3.7 版本新增: 巢狀定義的描述符。它們透過新的 children 屬性訪問。每個都有一個新的 parent 屬性。

這些函式返回的描述符是 Function 和 Class 類的例項。使用者不應建立這些類的例項。

函式物件

class pyclbr.Function

Function 例項描述由 def 語句定義的函式。它們具有以下屬性

file

定義函式的檔名。

module

定義所描述函式的模組名稱。

name

函式名。

lineno

檔案中定義開始的行號。

parent

對於頂級函式,為 None。對於巢狀函式,為其父級。

在 3.7 版本加入。

children

一個 dictionary,將名稱對映到巢狀函式和類的描述符。

在 3.7 版本加入。

is_async

對於使用 async 字首定義的函式,為 True,否則為 False

在 3.10 版本加入。

類物件

class pyclbr.Class

Class 例項描述由 class 語句定義的類。它們與 Functions 具有相同的屬性,並額外有兩個屬性。

file

定義類的檔名。

module

定義所描述類的模組名稱。

name

類名。

lineno

檔案中定義開始的行號。

parent

對於頂級類,為 None。對於巢狀類,為其父級。

在 3.7 版本加入。

children

一個字典,將名稱對映到巢狀函式和類的描述符。

在 3.7 版本加入。

super

一個 Class 物件列表,描述所描述類的直接基類。被命名為超類但無法透過 readmodule_ex() 發現的類將作為包含類名的字串列出,而不是 Class 物件。

methods

一個 dictionary,將方法名對映到行號。這可以從新的 children 字典中派生,但為了向後相容性而保留。