JythonClassesInJava
This wiki is in the process of being archived due to lack of usage and the resources necessary to serve it — predominately to bots, crawlers, and LLM companies. Edits are discouraged.
Pages are preserved as they were at the time of archival. For current information, please visit python.org.
If a change to this archive is absolutely needed, requests can be made via the infrastructure@python.org mailing list.
NOTE: This documents the pre NewStyleClasses world -- so this style should *not* be used for new development against Jython 2.2 or later.
Magic fields for Jython objects
__class__
__methods__ This is a list of methods initially exposed by the class. This list can be modified by an instance.
__members__ This is a list of attributes for a class. This list can be modified by an instance.
Hiding functionality from Jython
Implement ClassDictInit and set the value of the attribute you wish to hide to null.
Add the exception PyIgnoreMethodTag to the throws clause of a method for it to be masked by Jython.
Example Code
public class JythonClass extends PyObject implements ClassDictInit {
/** Field __class__ */
public static PyClass __class__;
/** Field __methods__ */
protected static PyList __methods__;
/** Field __members__ */
protected static PyList __members__;
/** Field exposedtojython */
protected long exposedtojython;
/** Field hiddenFromJython */
protected long hiddenFromJython;
static {
PyObject[] m = new PyObject[1];
m[0] = Py.newString("amethod");
__methods__ = new PyList(m);
m = new PyObject[1];
m[0] = Py.newString("amember");
__members__ = new PyList(m);
}
/**
* Initializes the object's namespace.
*
* @param dict
*/
static public void classDictInit(PyObject dict) throws PyIgnoreMethodTag {
dict.__setitem__("ticks", new DateTimeFunc("ticks", 1, 1, 2, true, "ticks"));
dict.__setitem__("gmtoffset", new DateTimeFunc("gmtoffset", 2, 0, 0, true, "gmtoffset"));
// hide from python
dict.__setitem__("classDictInit", null);
dict.__setitem__("getPyClass", null);
dict.__setitem__("hideFromJython", null);
dict.__setitem__("otherHiddenMethod", null);
}