org.python.core
Class PyType

java.lang.Object
  extended by org.python.core.PyObject
      extended by org.python.core.PyType
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
PyJavaType, PyTypeDerived

public class PyType
extends PyObject
implements Serializable

The Python Type object implementation.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.python.core.PyObject
PyObject.ConversionException
 
Field Summary
static PyType TYPE
           
 
Method Summary
 PyObject __call__(PyObject[] args, String[] keywords)
          The basic method to override when implementing a callable object.
 void __delattr__(String name)
          A variant of the __delattr__ method which accepts a String as the key.
 PyObject __findattr_ex__(String name)
          Attribute lookup hook.
 void __setattr__(String name, PyObject value)
          A variant of the __setattr__ method which accepts a String as the key.
 Object __tojava__(Class<?> c)
          Equivalent to the Jython __tojava__ method.
static void addBuilder(Class<?> forClass, org.python.expose.TypeBuilder builder)
           
 void addMethod(PyBuiltinMethod meth)
          Adds the given method to this type's dict under its name in its descriptor.
 void compatibleForAssignment(PyType other, String attribute)
          Ensures that the physical layout between this type and other are compatible.
 void delBases()
           
 void delDict()
           
 void delModule()
           
static void ensureDoc(PyObject dict)
          Ensure dict contains a __doc__.
static void ensureModule(PyObject dict)
          Ensure dict contains a __module__, retrieving it from the current frame if it doesn't exist.
 PyObject fastGetDict()
          Returns the actual dict underlying this type instance.
 String fastGetName()
           
static PyType fromClass(Class<?> c)
           
 PyObject getBase()
           
 PyObject getBases()
           
 PyObject getDict()
          xxx implements where meaningful
 PyObject getDoc()
          Equivalent of CPython's typeobject type_get_doc; handles __doc__ descriptors.
 PyLong getFlags()
           
 PyObject getModule()
           
 PyTuple getMro()
           
 String getName()
           
 int getNumSlots()
           
 Class<?> getProxyType()
          Returns the Java Class that this type inherits from, or null if this type is Python-only.
 PyObject getStatic()
           
 PyObject instDict()
           
 boolean isSubType(PyType supertype)
           
 PyObject lookup_where(String name, PyObject[] where)
           
 PyObject lookup(String name)
          INTERNAL lookup for name through mro objects' dicts
static PyObject newType(PyNewWrapper new_, PyType metatype, String name, PyTuple bases, PyObject dict)
           
 void noAttributeError(String name)
          Raises AttributeError on type objects.
 void pyDelName()
           
 PyObject pyGetName()
           
 void pySetName(PyObject name)
           
 void removeMethod(PyBuiltinMethod meth)
          Removes the given method from this type's dict or raises a KeyError.
 void setBases(PyObject newBasesTuple)
           
 void setDict(PyObject newDict)
           
 void setName(String name)
           
 PyObject super_lookup(PyType ref, String name)
           
 String toString()
           
static PyObject type___new__(PyNewWrapper new_, boolean init, PyType subtype, PyObject[] args, String[] keywords)
           
 PyObject type___subclasses__()
           
 
Methods inherited from class org.python.core.PyObject
__abs__, __add__, __and__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __cmp__, __coerce__, __coerce_ex__, __complex__, __contains__, __delattr__, __delete__, __delitem__, __delitem__, __delslice__, __delslice__, __dir__, __div__, __divmod__, __eq__, __findattr__, __findattr__, __finditem__, __finditem__, __finditem__, __float__, __floordiv__, __ge__, __get__, __getattr__, __getattr__, __getitem__, __getitem__, __getnewargs__, __getslice__, __getslice__, __gt__, __hash__, __hex__, __iadd__, __iand__, __idiv__, __idivmod__, __ifloordiv__, __ilshift__, __imod__, __imul__, __index__, __int__, __invert__, __ior__, __ipow__, __irshift__, __isub__, __iter__, __iternext__, __itruediv__, __ixor__, __le__, __len__, __long__, __lshift__, __lt__, __mod__, __mul__, __ne__, __neg__, __nonzero__, __not__, __oct__, __or__, __pos__, __pow__, __pow__, __radd__, __rand__, __rdiv__, __rdivmod__, __reduce__, __reduce_ex__, __reduce_ex__, __repr__, __rfloordiv__, __rlshift__, __rmod__, __rmul__, __ror__, __rpow__, __rrshift__, __rshift__, __rsub__, __rtruediv__, __rxor__, __set__, __setattr__, __setitem__, __setitem__, __setitem__, __setslice__, __setslice__, __str__, __sub__, __truediv__, __unicode__, __xor__, _add, _and, _callextra, _cmp, _div, _divmod, _doget, _doget, _doset, _eq, _floordiv, _ge, _gt, _iadd, _iand, _idiv, _idivmod, _ifloordiv, _ilshift, _imod, _imul, _in, _ior, _ipow, _irshift, _is, _isnot, _isub, _itruediv, _ixor, _jcall, _jcallexc, _jthrow, _le, _lshift, _lt, _mod, _mul, _ne, _notin, _or, _pow, _rshift, _sub, _truediv, _xor, asDouble, asIndex, asIndex, asInt, asInt, asIterable, asLong, asName, asName, asString, asString, asStringOrNull, asStringOrNull, delType, dispatch__init__, equals, fastGetClass, getType, hashCode, implementsDescrDelete, implementsDescrSet, invoke, invoke, invoke, invoke, invoke, invoke, isCallable, isDataDescr, isIndex, isMappingType, isNumberType, isSequenceType, readonlyAttributeError, setType
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

TYPE

public static PyType TYPE
Method Detail

type___new__

public static PyObject type___new__(PyNewWrapper new_,
                                    boolean init,
                                    PyType subtype,
                                    PyObject[] args,
                                    String[] keywords)

newType

public static PyObject newType(PyNewWrapper new_,
                               PyType metatype,
                               String name,
                               PyTuple bases,
                               PyObject dict)

ensureDoc

public static void ensureDoc(PyObject dict)
Ensure dict contains a __doc__.

Parameters:
dict - a PyObject mapping

ensureModule

public static void ensureModule(PyObject dict)
Ensure dict contains a __module__, retrieving it from the current frame if it doesn't exist.

Parameters:
dict - a PyObject mapping

getStatic

public PyObject getStatic()

compatibleForAssignment

public void compatibleForAssignment(PyType other,
                                    String attribute)
Ensures that the physical layout between this type and other are compatible. Raises a TypeError if not.


getBase

public PyObject getBase()

getBases

public PyObject getBases()

delBases

public void delBases()

setBases

public void setBases(PyObject newBasesTuple)

instDict

public PyObject instDict()

getMro

public PyTuple getMro()

getFlags

public PyLong getFlags()

type___subclasses__

public final PyObject type___subclasses__()

getProxyType

public Class<?> getProxyType()
Returns the Java Class that this type inherits from, or null if this type is Python-only.


isSubType

public boolean isSubType(PyType supertype)

lookup

public PyObject lookup(String name)
INTERNAL lookup for name through mro objects' dicts

Parameters:
name - attribute name (must be interned)
Returns:
found object or null

lookup_where

public PyObject lookup_where(String name,
                             PyObject[] where)

super_lookup

public PyObject super_lookup(PyType ref,
                             String name)

addBuilder

public static void addBuilder(Class<?> forClass,
                              org.python.expose.TypeBuilder builder)

fromClass

public static PyType fromClass(Class<?> c)

__findattr_ex__

public PyObject __findattr_ex__(String name)
Description copied from class: PyObject
Attribute lookup hook. If the attribute is not found, null may be returned or a Py.AttributeError can be thrown, whatever is more correct, efficient and/or convenient for the implementing class. Client code should use PyObject.__getattr__(String) or PyObject.__findattr__(String). Both methods have a clear policy for failed lookups.

Overrides:
__findattr_ex__ in class PyObject
Returns:
The looked up value. May return null if the attribute is not found

__setattr__

public void __setattr__(String name,
                        PyObject value)
Description copied from class: PyObject
A variant of the __setattr__ method which accepts a String as the key. This String must be interned.

Overrides:
__setattr__ in class PyObject
Parameters:
name - the name whose value will be set - must be an interned string .
value - the value to set this name to
See Also:
PyObject.__setattr__(PyString, PyObject)

addMethod

public void addMethod(PyBuiltinMethod meth)
Adds the given method to this type's dict under its name in its descriptor. If there's an existing item in the dict, it's replaced.


removeMethod

public void removeMethod(PyBuiltinMethod meth)
Removes the given method from this type's dict or raises a KeyError.


__delattr__

public void __delattr__(String name)
Description copied from class: PyObject
A variant of the __delattr__ method which accepts a String as the key. This String must be interned. By default, this will call __delattr__(PyString name) with the appropriate args. The only reason to override this method is for performance.

Overrides:
__delattr__ in class PyObject
Parameters:
name - the name which will be removed - must be an interned string .
See Also:
PyObject.__delattr__(PyString)

__call__

public PyObject __call__(PyObject[] args,
                         String[] keywords)
Description copied from class: PyObject
The basic method to override when implementing a callable object. The first len(args)-len(keywords) members of args[] are plain arguments. The last len(keywords) arguments are the values of the keyword arguments.

Overrides:
__call__ in class PyObject
Parameters:
args - all arguments to the function (including keyword arguments).
keywords - the keywords used for all keyword arguments.

fastGetName

public String fastGetName()

pyGetName

public PyObject pyGetName()

getName

public String getName()

pySetName

public void pySetName(PyObject name)

setName

public void setName(String name)

pyDelName

public void pyDelName()

fastGetDict

public PyObject fastGetDict()
Returns the actual dict underlying this type instance. Changes to Java types should go through addMethod(org.python.core.PyBuiltinMethod) and removeMethod(org.python.core.PyBuiltinMethod), or unexpected mro errors can occur.

Overrides:
fastGetDict in class PyObject
Returns:
internal object per instance dict or null

getDict

public PyObject getDict()
Description copied from class: PyObject
xxx implements where meaningful

Overrides:
getDict in class PyObject
Returns:
internal object __dict__ or null

setDict

public void setDict(PyObject newDict)
Overrides:
setDict in class PyObject

delDict

public void delDict()
Overrides:
delDict in class PyObject

getDoc

public PyObject getDoc()
Equivalent of CPython's typeobject type_get_doc; handles __doc__ descriptors.

Overrides:
getDoc in class PyObject

__tojava__

public Object __tojava__(Class<?> c)
Description copied from class: PyObject
Equivalent to the Jython __tojava__ method. Tries to coerce this object to an instance of the requested Java class. Returns the special object Py.NoConversion if this PyObject can not be converted to the desired Java class.

Overrides:
__tojava__ in class PyObject
Parameters:
c - the Class to convert this PyObject to.

getModule

public PyObject getModule()

delModule

public void delModule()

getNumSlots

public int getNumSlots()

toString

public String toString()
Overrides:
toString in class PyObject

noAttributeError

public void noAttributeError(String name)
Raises AttributeError on type objects. The message differs from PyObject#noAttributeError, to mimic CPython behaviour.

Overrides:
noAttributeError in class PyObject


Jython homepage