pyclbr ---Python模块浏览器支持

源代码: Lib/pyclbr.py


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

pyclbr.readmodule(module, path=None)

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

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

pyclbr.readmodule_ex(module, path=None)

返回一个基于字典的树,其中包含模块中定义的每个函数和类的函数或类描述符,其中 defclass 声明。返回的字典将模块级函数和类名映射到它们的描述符。嵌套对象被输入到其父对象的子字典中。和readmodule一样, 模块 将要读取的模块命名为 path 在sys.path之前。如果正在读取的模块是一个包,则返回的字典有一个键 '__path__' 其值是包含包搜索路径的列表。

3.7 新版功能: 嵌套定义的描述符。可以通过新的子属性访问它们。每个都有一个新的父属性。

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

函数对象

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

Function.file

定义函数的文件的名称。

Function.module

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

Function.name

函数的名称。

Function.lineno

定义开始的文件中的行号。

Function.parent

对于顶级功能,无。对于嵌套函数,为父级。

3.7 新版功能.

Function.children

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

3.7 新版功能.

Function.is_async

True 对于使用 async 前缀, False 不然的话。

3.10 新版功能.

类对象

等级 Class 实例描述由类语句定义的类。它们与函数具有相同的属性,还有两个属性。

Class.file

在其中定义类的文件的名称。

Class.module

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

Class.name

类的名称。

Class.lineno

定义开始的文件中的行号。

Class.parent

对于顶级课程,没有。对于嵌套类,是父类。

3.7 新版功能.

Class.children

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

3.7 新版功能.

Class.super

列表 Class 描述所描述类的直接基类的对象。被命名为超类但不能被发现的类 readmodule_ex() 列为具有类名而不是as的字符串 Class 物体。

Class.methods

将方法名映射到行号的字典。这可以从较新的子字典派生,但仍保持向后兼容性。