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

源代碼: Lib/pyclbr.py


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

pyclbr.readmodule(module, path=None)?

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

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

pyclbr.readmodule_ex(module, path=None)?

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

3.7 新版功能: 嵌套定義的描述器。 它們通過(guò)新的子屬性來(lái)訪問(wèn)。 每個(gè)定義都會(huì)有一個(gè)新的上級(jí)屬性。

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

Function 對(duì)象?

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

Function.file?

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

Function.module?

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

Function.name?

函數(shù)名稱。

Function.lineno?

定義在文件中起始位置的行號(hào)。

Function.parent?

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

3.7 新版功能.

Function.children?

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

3.7 新版功能.

Function.is_async?

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

3.10 新版功能.

Class 對(duì)象?

Class 類的實(shí)例描述了由 class 語(yǔ)句所定義的類。 它們具有與 Function 對(duì)象相同的屬性以及兩個(gè)額外屬性。

Class.file?

類定義所在的文件名稱。

Class.module?

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

Class.name?

類名稱。

Class.lineno?

定義在文件中起始位置的行號(hào)。

Class.parent?

對(duì)于最高層級(jí)類為 None。 對(duì)于嵌套類則為上級(jí)類。

3.7 新版功能.

Class.children?

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

3.7 新版功能.

Class.super?

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

Class.methods?

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