【发布时间】:2020-05-04 16:31:04
【问题描述】:
感谢您花时间阅读本文。希望在这些奇怪的时刻你一切都好。
我正在实现一个类并开始研究如何为其属性提供自动完成功能。
根据我的在线研究,我得出结论,ipython 完成来自__dir__ 方法。
__getattr__ 通常在您访问不存在的属性时被调用。在我的项目中,如果发生这种情况,则会运行需要一段时间的操作。为什么 ipython 试图访问属性而不是仅仅显示 __dir__ 返回的内容?
在单元格 2 中,我在点后点击选项卡以要求完成。
【问题讨论】:
-
这不是 iPython 特有的;
__getattr__似乎是在__dir__返回的列表的最后一项上调用的,即使在 CPython 中也是如此。 -
刚刚检查过,
__dir__的每个元素都会调用它 -
我不确定。您可能想深入了解
rlcompletermodule,CPython(可能还有 iPython)使用它来启用制表符补全。模块 cmets 明确提到了__getattr__被调用的风险,尽管对我来说如何发生这种情况并不明显。 -
真的很奇怪。我会调查此事。
标签: python python-3.x jupyter-notebook ipython