Предоставление карты 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,

Другие вопросы по тегам