pyclbr --- Python 模組瀏覽器支援

原始碼:Lib/pyclbr.py


pyclbr 模組可以提供一個使用 Python 編寫的模組中定義的函式、類別和方法的有限資訊。這些資訊足以實作一個模組瀏覽器。這些資訊是從 Python 原始碼中抽取出來的,而不是透過引入模組,因此這個模組可以安全地與不信任的程式碼一起使用。此限制使得此模組無法與非 Python 實作的模組一起使用,包括所有標準與可選的擴充模組。

pyclbr.readmodule(module,path=None)

回傳模組層級的類別名稱與類別描述器對應的字典。如果可能的話,會包含引入基底類別的描述器。參數module 是包含要讀取的模組名稱的字串;它可以是套件中的模組名稱。如果給定,path 是以sys.path 為前綴的目錄路徑序列,用來定位模組原始碼。

此函式為原始介面,僅保留用於向後相容性。它回傳的會是 readmodule_ex 回傳結果的篩選後版本。

pyclbr.readmodule_ex(module,path=None)

回傳一個以字典為基礎的樹狀結構,包含在模組中以defclass 陳述式定義的每個函式和類別的函式或類別描述器。回傳的字典會將模組層級的函式和類別名稱對映到它們的描述器。巢狀物件會輸入其父物件的子字典。與 readmodule 一樣,module 會指定要讀取的模組,而path 則會預先加入 sys.path。如果要讀取的模組是一個套件,回傳的字典有一個 key'__path__',其值是一個包含套件搜尋路徑的串列。

在 3.7 版被加入:巢狀定義(nested definitions)的描述器。這些描述器可透過新的子屬性來存取。每個描述器都有一個新的父屬性。

這些函式所回傳的描述器是 Function 和 Class 類別的實例。使用者不需要建立這些類別的實例。

函式物件

classpyclbr.Function

ClassFunction 實例描述由 def 陳述式定義的函式。它們具有以下屬性:

file

定義函式的檔案名稱。

module

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

name

函式的名稱。

lineno

檔案中定義開始的行號。

parent

對於頂層函式(top-level functions)為None。對於巢狀函式,則使用父函式。

在 3.7 版被加入.

children

一個dictionary 將名稱對應到巢狀函式和類別的描述器。

在 3.7 版被加入.

is_async

對於使用async 前綴定義的函式是True,否則是False

在 3.10 版被加入.

類別物件

classpyclbr.Class

ClassClass 實例描述由 class 陳述式定義的類別。它們具有與Functions 相同的屬性,以及另外兩個屬性。

file

定義類別的檔案名稱。

module

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

name

類別的名稱。

lineno

檔案中定義開始的行號。

parent

對於頂層類別為None。對於巢狀類別,則使用父類別。

在 3.7 版被加入.

children

將名稱對應到巢狀函式和類別的描述器的字典。

在 3.7 版被加入.

super

描述被描述類別的直接基底類別的Class 物件串列。被命名為超類別(superclasses)但無法被readmodule_ex() 發現的類別會以類別名稱的字串形式列出,而不是Class 物件。

methods

一個dictionary 方法名稱對應到行號。這可以從較新的children 字典衍生出來,但為了向後相容性而保留。