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)?
返回一個基于字典的樹,其中包含與模塊中每個用
def
或class
語句定義的函數(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?
一個將方法名映射到行號的字典。 此屬性可從更新的子目錄中獲取,僅保留用于向下兼容。