Package org.python.core
Class PyType
- java.lang.Object
-
- org.python.core.PyObject
-
- org.python.core.PyType
-
- All Implemented Interfaces:
java.io.Serializable
,Traverseproc
- Direct Known Subclasses:
PyJavaType
,PyTypeDerived
public class PyType extends PyObject implements java.io.Serializable, Traverseproc
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
Fields Modifier and Type Field Description static PyType
TYPE
-
Fields inherited from class org.python.core.PyObject
gcMonitorGlobal
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description PyObject
__call__(PyObject[] args, java.lang.String[] keywords)
The basic method to override when implementing a callable object.void
__delattr__(java.lang.String name)
A variant of the __delattr__ method which accepts a String as the key.PyObject
__findattr_ex__(java.lang.String name)
Attribute lookup hook.void
__setattr__(java.lang.String name, PyObject value)
A variant of the __setattr__ method which accepts a String as the key.java.lang.Object
__tojava__(java.lang.Class<?> c)
Equivalent to the Jython __tojava__ method.static void
addBuilder(java.lang.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, java.lang.String attribute)
Ensures that the physical layout between this type andother
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.java.lang.String
fastGetName()
static PyType
fromClass(java.lang.Class<?> c)
static PyType
fromClass(java.lang.Class<?> c, boolean hardRef)
PyObject
getAbstractmethods()
PyObject
getBase()
PyObject
getBases()
PyObject
getDict()
xxx implements where meaningfulPyObject
getDoc()
Equivalent of CPython's typeobject.c::type_get_doc; handles __doc__ descriptors.PyLong
getFlags()
PyObject
getModule()
PyTuple
getMro()
java.lang.String
getName()
int
getNumSlots()
java.lang.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(java.lang.String name)
Attribute lookup for name through mro objects' dicts.PyObject
lookup_where(java.lang.String name, PyObject[] where)
Attribute lookup for name through mro objects' dicts.boolean
needsFinalizer()
Offers public read-only access to the protected field needs_finalizer.static PyObject
newType(PyNewWrapper new_, PyType metatype, java.lang.String name, PyTuple bases, PyObject dict)
void
noAttributeError(java.lang.String name)
Raises AttributeError on type objects.void
pyDelName()
PyObject
pyGetName()
void
pySetName(PyObject name)
boolean
refersDirectlyTo(PyObject ob)
Optional operation.void
removeMethod(PyBuiltinMethod meth)
Removes the given method from this type's dict or raises a KeyError.void
setAbstractmethods(PyObject value)
void
setBases(PyObject newBasesTuple)
void
setDict(PyObject newDict)
void
setName(java.lang.String name)
PyObject
super_lookup(PyType ref, java.lang.String name)
java.lang.String
toString()
int
traverse(Visitproc visit, java.lang.Object arg)
Traverses all directly containedPyObject
s.PyObject
type___eq__(PyObject other)
PyObject
type___ge__(PyObject other)
PyObject
type___gt__(PyObject other)
boolean
type___instancecheck__(PyObject inst)
PyObject
type___le__(PyObject other)
PyObject
type___lt__(PyObject other)
PyObject
type___ne__(PyObject other)
boolean
type___subclasscheck__(PyObject inst)
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__, __ensure_finalizer__, __eq__, __findattr__, __findattr__, __finditem__, __finditem__, __finditem__, __float__, __floordiv__, __format__, __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__, __trunc__, __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, asLong, asName, asName, asString, asString, asStringOrNull, asStringOrNull, bit_length, conjugate, delType, dispatch__init__, equals, fastGetClass, getType, hashCode, implementsDescrDelete, implementsDescrGet, implementsDescrSet, invoke, invoke, invoke, invoke, invoke, invoke, isCallable, isDataDescr, isIndex, isInteger, isMappingType, isNumberType, isSequenceType, object___subclasshook__, readonlyAttributeError, setType
-
-
-
-
Field Detail
-
TYPE
public static final PyType TYPE
-
-
Method Detail
-
newType
public static PyObject newType(PyNewWrapper new_, PyType metatype, java.lang.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()
-
needsFinalizer
public final boolean needsFinalizer()
Offers public read-only access to the protected field needs_finalizer.- Returns:
- a boolean indicating whether the type implements __del__
-
compatibleForAssignment
public void compatibleForAssignment(PyType other, java.lang.String attribute)
Ensures that the physical layout between this type andother
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__()
-
type___subclasscheck__
public final boolean type___subclasscheck__(PyObject inst)
-
type___instancecheck__
public final boolean type___instancecheck__(PyObject inst)
-
getProxyType
public java.lang.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(java.lang.String name)
Attribute lookup for name through mro objects' dicts. Lookups are cached.- Parameters:
name
- attribute name (must be interned)- Returns:
- found object or null
-
lookup_where
public PyObject lookup_where(java.lang.String name, PyObject[] where)
Attribute lookup for name through mro objects' dicts. Lookups are cached. Returns where in the mro the attribute was found at where[0].- Parameters:
name
- attribute name (must be interned)where
- Where in the mro the attribute was found is written to index 0- Returns:
- found object or null
-
addBuilder
public static void addBuilder(java.lang.Class<?> forClass, org.python.expose.TypeBuilder builder)
-
fromClass
public static PyType fromClass(java.lang.Class<?> c)
-
fromClass
public static PyType fromClass(java.lang.Class<?> c, boolean hardRef)
-
__findattr_ex__
public PyObject __findattr_ex__(java.lang.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 usePyObject.__getattr__(String)
orPyObject.__findattr__(String)
. Both methods have a clear policy for failed lookups.- Overrides:
__findattr_ex__
in classPyObject
- Returns:
- The looked up value. May return null if the attribute is not found
-
__setattr__
public void __setattr__(java.lang.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 classPyObject
- 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__(java.lang.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 classPyObject
- Parameters:
name
- the name which will be removed - must be an interned string .- See Also:
PyObject.__delattr__(PyString)
-
__call__
public PyObject __call__(PyObject[] args, java.lang.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.
-
fastGetName
public java.lang.String fastGetName()
-
pyGetName
public PyObject pyGetName()
-
getName
public java.lang.String getName()
-
pySetName
public void pySetName(PyObject name)
-
setName
public void setName(java.lang.String name)
-
pyDelName
public void pyDelName()
-
fastGetDict
public PyObject fastGetDict()
Returns the actual dict underlying this type instance. Changes to Java types should go throughaddMethod(org.python.core.PyBuiltinMethod)
andremoveMethod(org.python.core.PyBuiltinMethod)
, or unexpected mro errors can occur.- Overrides:
fastGetDict
in classPyObject
- Returns:
- internal object per instance dict or null
-
getDict
public PyObject getDict()
Description copied from class:PyObject
xxx implements where meaningful
-
getDoc
public PyObject getDoc()
Equivalent of CPython's typeobject.c::type_get_doc; handles __doc__ descriptors.
-
__tojava__
public java.lang.Object __tojava__(java.lang.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 objectPy.NoConversion
if thisPyObject
can not be converted to the desired Java class.- Overrides:
__tojava__
in classPyObject
- Parameters:
c
- the Class to convert thisPyObject
to.
-
getModule
public PyObject getModule()
-
delModule
public void delModule()
-
getAbstractmethods
public PyObject getAbstractmethods()
-
setAbstractmethods
public void setAbstractmethods(PyObject value)
-
getNumSlots
public int getNumSlots()
-
noAttributeError
public void noAttributeError(java.lang.String name)
Raises AttributeError on type objects. The message differs from PyObject#noAttributeError, to mimic CPython behaviour.- Overrides:
noAttributeError
in classPyObject
-
traverse
public int traverse(Visitproc visit, java.lang.Object arg)
Description copied from interface:Traverseproc
Traverses all directly containedPyObject
s. Like in CPython,arg
must be passed unmodified tovisit
as its second parameter. IfVisitproc.visit(PyObject, Object)
returns nonzero, this return value must be returned immediately by traverse.Visitproc.visit(PyObject, Object)
must not be called with anull
PyObject-argument.- Specified by:
traverse
in interfaceTraverseproc
-
refersDirectlyTo
public boolean refersDirectlyTo(PyObject ob) throws java.lang.UnsupportedOperationException
Description copied from interface:Traverseproc
Optional operation. Should only be implemented if it is more efficient than callingTraverseproc.traverse(Visitproc, Object)
with a visitproc that just watches out forob
. Must returnfalse
ifob
isnull
.- Specified by:
refersDirectlyTo
in interfaceTraverseproc
- Throws:
java.lang.UnsupportedOperationException
-
-