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

源代碼: Lib/pyclbr.py


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

pyclbr.readmodule(module, path=None)?

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

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

pyclbr.readmodule_ex(module, path=None)?

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

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

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

Function 對象?

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

Function.file?

函數定義所在的文件名稱(chēng)。

Function.module?

定義了所描述函數的模塊名稱(chēng)。

Function.name?

函數名稱(chēng)。

Function.lineno?

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

Function.parent?

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

3.7 新版功能.

Function.children?

將名稱(chēng)映射到嵌套函數和類(lèi)描述器的字典。

3.7 新版功能.

Function.is_async?

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

3.10 新版功能.

Class 對象?

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

Class.file?

類(lèi)定義所在的文件名稱(chēng)。

Class.module?

定義了所描述類(lèi)的模塊名稱(chēng)。

Class.name?

類(lèi)名稱(chēng)。

Class.lineno?

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

Class.parent?

對于最高層級類(lèi)為 None。 對于嵌套類(lèi)則為上級類(lèi)。

3.7 新版功能.

Class.children?

將名稱(chēng)映射到嵌套函數和類(lèi)描述器的字典。

3.7 新版功能.

Class.super?

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

Class.methods?

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