我正在观察IPython中对象属性自动完成的奇怪行为:
x1.<tab>
工作正常,并建议x1.__dir__()
中的项目,其中包括x2
。但是,这不起作用(不建议任何操作):
x1.x2.<tab>
但是,x1.x2.__dir__()
确实返回了字符串列表。
更奇怪的是,它确实起作用:
x3 = x1.x2
x3.<tab>
x1
和x1.x2
类的实现非常复杂,特别是因为它覆盖__dir__
并动态生成返回值。看来这些类的实现是问题所在,因为我无法通过简单的示例来复制问题。
属性自动完成功能比obj.__dir__()
的返回值还多吗?击中时,如何调试Ipython试图执行的操作?