Предоставление карты Java <> в Jython, чтобы ее ключи были доступны с помощью оператора "точка" Python (доступ к атрибутам)
У нас есть немного Map<String, Object>
в Java, которую я хотел бы сделать доступной в функции Jython. Я хотел бы получить доступ к содержимому через
mymap.foo.bar
скорее, чем
mymap['foo']['bar']
Есть ли способ обернуть Map
в объекте, чтобы он имел такое поведение в Jython? (например, как __getattr__
метод в Python, только в Java)
1 ответ
Решение
В итоге я реализовал это:
@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
,