pyclbr — Python 模块浏览器支持

源代码: Lib/pyclbr.py


pyclbr 模块提供有关 Python 代码模块中定义的函数、类和方法的有限信息。这些信息足以实现模块浏览器。信息是从 Python 源代码中提取的,而不是通过导入模块来提取的,因此此模块可以安全地用于不受信任的代码。此限制使得无法将此模块用于未用 Python 实现的模块,包括所有标准和可选扩展模块。

pyclbr.readmodule(module, path=None)

返回一个字典,将模块级类名映射到类描述符。如果可能,将包含导入的基类的描述符。参数 module 是一个字符串,包含要读取的模块的名称;它可以是包中模块的名称。如果给出,path 是一个目录路径序列,预先添加到 sys.path,用于定位模块源代码。

此函数是原始接口,仅保留用于向后兼容性。它返回以下内容的过滤版本。

pyclbr.readmodule_ex(module, path=None)

返回一个基于字典的树,其中包含模块中每个用 defclass 语句定义的函数或类的函数或类描述符。返回的字典将模块级函数和类名映射到它们的描述符。嵌套对象被输入到其父级的 children 字典中。与 readmodule 一样,module 指定要读取的模块,path 预先添加到 sys.path。如果要读取的模块是一个包,则返回的字典有一个键 '__path__',其值是一个包含包搜索路径的列表。

在版本 3.7 中添加: 嵌套定义的描述符。可以通过新的 children 属性访问它们。每个都有一个新的 parent 属性。

这些函数返回的描述符是 Function 和 Class 类的实例。用户不应创建这些类的实例。

函数对象

class pyclbr.Function

Class Function 实例描述由 def 语句定义的函数。它们具有以下属性

file

定义函数的文件的名称。

module

定义所描述函数的模块的名称。

name

函数的名称。

lineno

文件中定义开始的行号。

parent

对于顶层函数,None。对于嵌套函数,父级。

在版本 3.7 中添加。

children

一个 dictionary,将名称映射到嵌套函数和类的描述符。

在版本 3.7 中添加。

is_async

对于用 async 前缀定义的函数,True,否则为 False

在版本 3.10 中添加。

类对象

class pyclbr.Class

Class Class 实例描述由 class 语句定义的类。它们具有与 Functions 相同的属性,以及另外两个属性。

file

定义类的文件名称。

module

定义所描述类的模块的名称。

name

类的名称。

lineno

文件中定义开始的行号。

parent

对于顶层类,None。对于嵌套类,父级。

在版本 3.7 中添加。

children

一个字典,将名称映射到嵌套函数和类的描述符。

在版本 3.7 中添加。

super

一个 Class 对象列表,描述所描述类的直接基类。作为超类命名的但无法通过 readmodule_ex() 发现的类,将作为包含类名的字符串列出,而不是作为 Class 对象列出。

methods

一个 dictionary,将方法名映射到行号。这可以从较新的 children 字典中推导出来,但保留用于向后兼容性。