【发布时间】:2010-10-02 17:03:13
【问题描述】:
当一个对象有数百个方法时,tab 补全很难使用。有趣的方法通常是被检查对象的类而不是其基类定义或覆盖的方法。
如何让 IPython 对其选项卡完成可能性进行分组,以便检查对象的类中定义的方法和属性首先出现,然后是基类中的方法和属性?
看起来未记录的 inspect.classify_class_attrs(cls) 函数和 inspect.getmro(cls) 为我提供了我需要的大部分信息(这些最初是为了实现 python 的 help(object) 功能而编写的)。
默认情况下 readline 按字母顺序显示完成,但用于显示完成的函数可以替换为 ctypes 或 Python 2.6 及更高版本包含的 readline 模块。我已经覆盖了 readline 的完成显示并且效果很好。
现在我只需要一个方法来合并每个类的信息(来自上面的inspect.*)和每个实例的信息,按方法解析顺序对结果进行排序,漂亮的打印和分页。
为了获得额外的奖励,最好存储所选的自动完成,并在下次对同一对象尝试自动完成时首先显示最受欢迎的选择。
【问题讨论】: