在 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
的对象。
我们在 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
的对象。