我实现了我自己的__getattr__()
来松散地处理任何不存在的属性。在
我只是碰巧在一个Jupyter笔记本中定义了这个类以交互方式进行实验。在
IPython由于这个__getattr__
实现而创建了_ipython_canary_method_should_not_exist_
,我想知道这是什么,以及如何“清理它”是可能的。
关于它有this issue打开了,但我不清楚为什么——如果它检查__getattr__
中的许可处理——它没有检查在OP的示例中是否实现了\u repr_html?在
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]
正如上面的注释中提到的taper;IPython有时需要检查对象以了解它们是否具有某些方法。在
处理像你这样的对象;它总是说“是”,当我们有疑问时,我们会探测这个名称;如果对象说“是,我明白了!”我们知道对象是谎言,并实现了
__getattr__
。在相关问题 更多 >
编程相关推荐