# 32.9. `pyclbr` - Python类浏览器支持

源代码： Lib / pyclbr.py

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

`pyclbr.``readmodule`(module, path=None)

  读取一个模块并返回一个字典映射类名到类描述器对象。参数模块应该是作为字符串的模块的名称；它可以是包内的模块的名称。path参数应该是一个序列，用于扩充`sys.path`的值，用于定位模块源代码。

`pyclbr.``readmodule_ex`(module, path=None)

  像`readmodule()`，但返回的字典，除了将类名映射到类描述器对象之外，还将顶级函数名映射到函数描述器对象。此外，如果正在读取的模块是包，则返回字典中的键`'__path__'`的值为包含软件包搜索路径的列表。

## 32.9.1. Class Objects

用作由`readmodule()`和`readmodule_ex()`返回的字典中的值的`Class`对象提供以下数据属性：

`Class.``module`

  定义由描述器描述的类的模块的名称。

`Class.``name`

  类的名称。

`Class.``super`

  描述正在描述的类的直接基类的`Class`对象的列表。被命名为超类但不能被`readmodule()`发现的类被列为具有类名称的字符串，而不是`Class`对象。

`Class.``methods`

  字典映射方法名称到行号。

`Class.``file`

  包含定义类的`class`语句的文件的名称。

`Class.``lineno`

  由`file`命名的文件中`class`语句的行号。

## 32.9.2. Function Objects

用作`readmodule_ex()`返回的字典中的值的`Function`对象提供以下属性：

`Function.``module`

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

`Function.``name`

  函数的名称。

`Function.``file`

  包含定义函数的`def`语句的文件名称。

`Function.``lineno`

  由`file`命名的文件中`def`语句的行号。