pyclbr
--- Python 模塊瀏覽器支持?
源代碼: Lib/pyclbr.py
pyclbr
模塊提供了對(duì)于以 Python 編寫的模塊中定義的函數(shù)、類和方法的受限信息。 這種信息足夠用來實(shí)現(xiàn)一個(gè)模塊瀏覽器。 這種信息是從 Python 源代碼中直接提取而非通過導(dǎo)入模塊,因此該模塊可以安全地用于不受信任的代碼。 此限制使得非 Python 實(shí)現(xiàn)的模塊無法使用此模塊,包括所有標(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)容的過濾版本。
- pyclbr.readmodule_ex(module, path=None)?
返回一個(gè)基于字典的樹,其中包含與模塊中每個(gè)用
def
或class
語句定義的函數(shù)和類相對(duì)應(yīng)的函數(shù)和類描述器。 被返回的字典會(huì)將模塊層級(jí)的函數(shù)和類名映射到它們的描述器。 嵌套的對(duì)象會(huì)被輸入到它們的上級(jí)子目錄中。 與 readmodule 一樣,module 指明要讀取的模塊而 path 會(huì)被添加到 sys.path。 如果被讀取的模塊是一個(gè)包,則返回的字典將具有'__path__'
鍵,其值是一個(gè)包含包搜索路徑的列表。
3.7 新版功能: 嵌套定義的描述器。 它們通過新的子屬性來訪問。 每個(gè)定義都會(huì)有一個(gè)新的上級(jí)屬性。
這些函數(shù)所返回的描述器是 Function 和 Class 類的實(shí)例。 用戶不應(yīng)自行創(chuàng)建這些類的實(shí)例。
Function 對(duì)象?
Function
類的實(shí)例描述了由 def 語句所定義的函數(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 語句所定義的類。 它們具有與 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ì)象的列表,它們描述了所描述類的直接基類。 被命名為超類但無法被readmodule_ex()
發(fā)現(xiàn)的類會(huì)作為類名字符串而非Class
對(duì)象列出。
- Class.methods?
一個(gè)將方法名映射到行號(hào)的字典。 此屬性可從更新的子目錄中獲取,僅保留用于向下兼容。