在 Jython 中公开一个 Java Map<> 以便它的键可用于 Python "dot" 运算符(属性访问)

exposing a Java Map<> in Jython so that its keys are available with Python "dot" operator (attribute access)

我们在 Java 中有一些 Map<String, Object>,我想将其提供给 Jython 函数。我想通过

访问内容
mymap.foo.bar

而不是

mymap['foo']['bar']

有没有办法将 Map 包装在一个对象中,以便它在 Jython 中具有这种行为? (例如 Python 中的 __getattr__ 方法,仅在 Java 中实现)

我最终实现了这个:

@Override public PyObject __findattr_ex__(String name) {
    if (this.containsKey(name))
    {
        return Py.java2py(this.get(name));
    }
    else
    {
        throw Py.AttributeError(name);
    }
}    

对于同时扩展 Map<String, Object>PyObject 的对象。