pyclbr --- Python 模塊瀏覽器支持?

源代碼: Lib/pyclbr.py


pyclbr 模塊提供了對于以 Python 編寫的模塊中定義的函數(shù)、類和方法的受限信息。 這種信息足夠用來實現(xiàn)一個模塊瀏覽器。 這種信息是從 Python 源代碼中直接提取而非通過導入模塊,因此該模塊可以安全地用于不受信任的代碼。 此限制使得非 Python 實現(xiàn)的模塊無法使用此模塊,包括所有標準和可選的擴展模塊。

pyclbr.readmodule(module, path=None)?

返回一個將模塊層級的類名映射到類描述器的字典。 如果可能,將會包括已導入基類的描述器。 形參 module 為要讀取模塊名稱的字符串;它可能是某個包內(nèi)部的模塊名稱。 path 如果給出則為添加到 sys.path 開頭的目錄路徑序列,它會被用于定位模塊的源代碼。

此函數(shù)為原始接口,僅保留用于向下兼容。 它會返回以下內(nèi)容的過濾版本。

pyclbr.readmodule_ex(module, path=None)?

返回一個基于字典的樹,其中包含與模塊中每個用 defclass 語句定義的函數(shù)和類相對應的函數(shù)和類描述器。 被返回的字典會將模塊層級的函數(shù)和類名映射到它們的描述器。 嵌套的對象會被輸入到它們的上級子目錄中。 與 readmodule 一樣,module 指明要讀取的模塊而 path 會被添加到 sys.path。 如果被讀取的模塊是一個包,則返回的字典將具有 '__path__' 鍵,其值是一個包含包搜索路徑的列表。

3.7 新版功能: 嵌套定義的描述器。 它們通過新的子屬性來訪問。 每個定義都會有一個新的上級屬性。

這些函數(shù)所返回的描述器是 Function 和 Class 類的實例。 用戶不應自行創(chuàng)建這些類的實例。

Function 對象?

Function 類的實例描述了由 def 語句所定義的函數(shù)。 它們具有下列屬性:

Function.file?

函數(shù)定義所在的文件名稱。

Function.module?

定義了所描述函數(shù)的模塊名稱。

Function.name?

函數(shù)名稱。

Function.lineno?

定義在文件中起始位置的行號。

Function.parent?

對于最高層級函數(shù)為 None。 對于嵌套函數(shù)則為上級函數(shù)。

3.7 新版功能.

Function.children?

將名稱映射到嵌套函數(shù)和類描述器的字典。

3.7 新版功能.

Function.is_async?

True 針對使用 async 前綴定義的函數(shù),其他情況下為 False

3.10 新版功能.

Class 對象?

Class 類的實例描述了由 class 語句所定義的類。 它們具有與 Function 對象相同的屬性以及兩個額外屬性。

Class.file?

類定義所在的文件名稱。

Class.module?

定義了所描述類的模塊名稱。

Class.name?

類名稱。

Class.lineno?

定義在文件中起始位置的行號。

Class.parent?

對于最高層級類為 None。 對于嵌套類則為上級類。

3.7 新版功能.

Class.children?

將名稱映射到嵌套函數(shù)和類描述器的字典。

3.7 新版功能.

Class.super?

一個 Class 對象的列表,它們描述了所描述類的直接基類。 被命名為超類但無法被 readmodule_ex() 發(fā)現(xiàn)的類會作為類名字符串而非 Class 對象列出。

Class.methods?

一個將方法名映射到行號的字典。 此屬性可從更新的子目錄中獲取,僅保留用于向下兼容。