From: mgreenberg <pub...@gm...> - 2008-03-31 20:18:26
|
I'm looking to do dynamic proxy of some python classes into corresponding java interfaces. So I want to do something like (mixing syntaxes a little): import java.lang.reflect.Proxy; Object proxyFor(PyObject pyo) { Class interface = Class.forName("org.baz.interfaces." + pyo.__class__.__name__); return Proxy.newProxyInstance(pyo.getClass().getClassLoader(), interface, new FancyProxy(pyo)); } where my FancyProxy handles delegating the interface calls to the underlying python object. Is this the correct way to get the python class name? String pyClassName = pyo.__getattr__("__class__").__getattr__("__name__"); Oh. of course with appropriate interning... Looking at the code it is not entirely clear what attributes will be available. There is also an unfortunate disconnect between the API doc at the website and the current release 2.2.1. E.g. website says PyObject has __class__ field no longer in PyObject.java, and does not mention various public methods in PyObject (getType, getDict, detDoc) which ARE there. Could the javadoc on the web site at least stick a header/footer indicating the version it was generated against? |