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 PyTypeTYPE-
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 voidaddBuilder(java.lang.Class<?> forClass, org.python.expose.TypeBuilder builder)voidaddMethod(PyBuiltinMethod meth)Adds the given method to this type's dict under its name in its descriptor.voidcompatibleForAssignment(PyType other, java.lang.String attribute)Ensures that the physical layout between this type andotherare compatible.voiddelBases()voiddelDict()voiddelModule()static voidensureDoc(PyObject dict)Ensure dict contains a __doc__.static voidensureModule(PyObject dict)Ensure dict contains a __module__, retrieving it from the current frame if it doesn't exist.PyObjectfastGetDict()Returns the actual dict underlying this type instance.java.lang.StringfastGetName()static PyTypefromClass(java.lang.Class<?> c)static PyTypefromClass(java.lang.Class<?> c, boolean hardRef)PyObjectgetAbstractmethods()PyObjectgetBase()PyObjectgetBases()PyObjectgetDict()xxx implements where meaningfulPyObjectgetDoc()Equivalent of CPython's typeobject.c::type_get_doc; handles __doc__ descriptors.PyLonggetFlags()PyObjectgetModule()PyTuplegetMro()java.lang.StringgetName()intgetNumSlots()java.lang.Class<?>getProxyType()Returns the Java Class that this type inherits from, or null if this type is Python-only.PyObjectgetStatic()PyObjectinstDict()booleanisSubType(PyType supertype)PyObjectlookup(java.lang.String name)Attribute lookup for name through mro objects' dicts.PyObjectlookup_where(java.lang.String name, PyObject[] where)Attribute lookup for name through mro objects' dicts.booleanneedsFinalizer()Offers public read-only access to the protected field needs_finalizer.static PyObjectnewType(PyNewWrapper new_, PyType metatype, java.lang.String name, PyTuple bases, PyObject dict)voidnoAttributeError(java.lang.String name)Raises AttributeError on type objects.voidpyDelName()PyObjectpyGetName()voidpySetName(PyObject name)booleanrefersDirectlyTo(PyObject ob)Optional operation.voidremoveMethod(PyBuiltinMethod meth)Removes the given method from this type's dict or raises a KeyError.voidsetAbstractmethods(PyObject value)voidsetBases(PyObject newBasesTuple)voidsetDict(PyObject newDict)voidsetName(java.lang.String name)PyObjectsuper_lookup(PyType ref, java.lang.String name)java.lang.StringtoString()inttraverse(Visitproc visit, java.lang.Object arg)Traverses all directly containedPyObjects.PyObjecttype___eq__(PyObject other)PyObjecttype___ge__(PyObject other)PyObjecttype___gt__(PyObject other)booleantype___instancecheck__(PyObject inst)PyObjecttype___le__(PyObject other)PyObjecttype___lt__(PyObject other)PyObjecttype___ne__(PyObject other)booleantype___subclasscheck__(PyObject inst)PyObjecttype___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 andotherare 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:PyObjectAttribute 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:PyObjectA 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:PyObjectA 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:PyObjectThe 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:
fastGetDictin classPyObject- Returns:
- internal object per instance dict or null
-
getDict
public PyObject getDict()
Description copied from class:PyObjectxxx 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:PyObjectEquivalent to the Jython __tojava__ method. Tries to coerce this object to an instance of the requested Java class. Returns the special objectPy.NoConversionif thisPyObjectcan not be converted to the desired Java class.- Overrides:
__tojava__in classPyObject- Parameters:
c- the Class to convert thisPyObjectto.
-
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:
noAttributeErrorin classPyObject
-
traverse
public int traverse(Visitproc visit, java.lang.Object arg)
Description copied from interface:TraverseprocTraverses all directly containedPyObjects. Like in CPython,argmust be passed unmodified tovisitas 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 anullPyObject-argument.- Specified by:
traversein interfaceTraverseproc
-
refersDirectlyTo
public boolean refersDirectlyTo(PyObject ob) throws java.lang.UnsupportedOperationException
Description copied from interface:TraverseprocOptional operation. Should only be implemented if it is more efficient than callingTraverseproc.traverse(Visitproc, Object)with a visitproc that just watches out forob. Must returnfalseifobisnull.- Specified by:
refersDirectlyToin interfaceTraverseproc- Throws:
java.lang.UnsupportedOperationException
-
-