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