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 語句在模組中定義的每個函式和類的描述符。返回的字典將模組級函式和類名對映到它們的描述符。巢狀物件將輸入到其父級的子級字典中。與 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 字典派生,但仍保留用於向後相容。