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è)用
def
或class
語(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è)將方法名映射到行號的字典。 此屬性可從更新的子目錄中獲取,僅保留用于向下兼容。