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);
 }

2026年02月14日 16:30

AltStyle によって変換されたページ (->オリジナル) /