什么是“ _ipython_canary_method_should_not_exist_”?

时间:2019-05-09 22:23:29

标签: python ipython jupyter

我实现了自己的__getattr__(),以松散地处理所有不存在的属性。

我碰巧在Jupyter笔记本中定义了该类,以进行交互式实验。

由于此_ipython_canary_method_should_not_exist_实现,IPython创建了__getattr__ –并且我想了解这是什么以及如何“清理”它。

其中有this issue个已打开,但是我不清楚为什么-如果它检查__getattr__内是否允许处理-它不会检查是否看到 _repr_html _ 是否在OP的示例中实现?

from types import SimpleNamespace

class Metabox(SimpleNamespace):

    def __getattr__(self, name):
        """
        Create a new namespace for any non-existing attributes.
        """
        print("calling __getattr__")
        self.__dict__[name] = Metabox()
        return self.__dict__[name]

1 个答案:

答案 0 :(得分:1)

如上述评论所述的锥度; IPython有时需要检查对象以了解它们是否具有某些方法。

处理像您这样的对象;总是说“是”,如果我们有疑问,我们会寻找这个名字;如果对象说“是的,我明白了!”我们知道对象位于并实现了__getattr__