我实现了我自己的__getattr__()
松散地处理任何不存在的属性。
我碰巧在 Jupyter 笔记本中定义了这个类,以交互方式进行实验。
IPython 创建_ipython_canary_method_should_not_exist_
由于此__getattr__
实施——以及我想了解这是什么以及如何“清理它”是可能的。
有这个问题 https://github.com/jupyter/notebook/issues/2014打开了它,但我不清楚为什么 – 如果它检查内的许可处理__getattr__
– 它不会检查这一点_repr_html_ is在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]
正如上面评论中提到的锥度; IPython 有时需要检查对象以了解它们是否具有某些方法。
处理像你这样的物体;总是说“是”,当我们有疑问时,我们会探究这个名字;如果对象说“是的,我明白了!”我们知道该对象所在并实施了__getattr__
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)