pyclbr — Python 模块浏览器支持 — Python 文档

来自菜鸟教程
Python/docs/3.10/library/pyclbr
跳转至:导航、​搜索

pyclbr — Python 模块浏览器支持

源代码: :source:`Lib/pyclbr.py`



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

pyclbr.readmodule(module, path=None)

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

该功能为原接口,保留后兼容。 它返回以下内容的过滤版本。

pyclbr.readmodule_ex(module, path=None)
使用 defclass 语句返回一个基于字典的树,其中包含模块中定义的每个函数和类的函数或类描述符。 返回的字典将模块级函数和类名映射到它们的描述符。 嵌套对象被输入到其父对象的子字典中。 与 readmodule 一样,module 命名要读取的模块,而 path 附加到 sys.path。 如果正在读取的模块是一个包,则返回的字典有一个键 '__path__',其值为包含包搜索路径的列表。

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


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

函数对象

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 实例描述了由 class 语句定义的类。 它们具有与 Functions 相同的属性,另外还有两个属性。

Class.file
在其中定义类的文件的名称。
Class.module
定义所描述类的模块的名称。
Class.name
班级名称。
Class.lineno
文件中定义开始的行号。
Class.parent

对于顶级课程,无。 对于嵌套类,父类。

3.7 版中的新功能。

Class.children

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

3.7 版中的新功能。

Class.super
Class 对象列表,用于描述所描述类的直接基类。 被命名为超类但不能被 readmodule_ex() 发现的类被列为带有类名的字符串,而不是 Class 对象。
Class.methods
字典映射方法名称到行号。 这可以从较新的儿童词典派生,但仍然是为了向后兼容。