pyclbr — Python 模块浏览器支持

源代码: Lib/pyclbr.py


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

  • pyclbr. readmodule(* module path = None *)
    • 返回将模块级类名称 Map 到类 Descriptors 的字典。如果可能,将包括导入的 Base Class 的 Descriptors。参数* module 是一个字符串,其中包含要读取的模块的名称;它可能是包中模块的名称。如果给定, path *是前缀为sys.path的目录路径序列,用于查找模块源代码。

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

  • pyclbr. readmodule_ex(* module path = None *)
    • 返回一个基于字典的树,其中包含使用defclass语句在模块中定义的每个函数和类的函数或类 Descriptors。返回的字典将模块级函数和类名称 Map 到其 Descriptors。嵌套对象被 Importing 到其父级的子级字典中。与 readmodule 一样,* module 命名要读取的模块,而 path *放在 sys.path 之前。如果正在读取的模块是软件包,则返回的字典具有键'__path__',其值是包含软件包搜索路径的列表。

3.7 版中的新Function:嵌套定义的 Descriptors。可pass new children 属性访问它们。每个都有一个新的父属性。

这些函数返回的 Descriptors 是 Function 和 Class 类的实例。不应要求用户创建这些类的实例。

Function Objects

Function类实例描述 def 语句定义的Function。它们具有以下属性:

  • Function. file

    • 定义Function的文件的名称。
  • Function. module

    • 定义所描述Function的模块名称。
  • Function. name

    • 函数的名称。
  • Function. lineno

    • 定义开始的文件中的行号。
  • Function. parent

    • 对于顶级Function,无。对于嵌套函数,父级。

3.7 版中的新Function。

  • Function. children
    • 字典将名称 Map 到嵌套函数和类的 Descriptors。

3.7 版中的新Function。

Class Objects

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

  • Class. file

    • 定义类的文件的名称。
  • Class. module

    • 定义所描述类的模块的名称。
  • Class. name

    • 类的名称。
  • Class. lineno

    • 定义开始的文件中的行号。
  • Class. parent

    • 对于顶级类,无。对于嵌套类,父级。

3.7 版中的新Function。

  • Class. children
    • 字典将名称 Map 到嵌套函数和类的 Descriptors。

3.7 版中的新Function。

  • Class. super

    • Class个对象的列表,这些对象描述了所描述类的直接 Base Class。被命名为超类但不能被readmodule_ex()发现的类被列为带有类名的字符串,而不是Class对象。
  • Class. methods

    • 字典将方法名称 Map 到行号。这可以从较新的 child 词典中获得,但仍保留用于向后兼容。