public abstract class PySequence extends PyObject
Modifier and Type | Class and Description |
---|---|
protected class |
PySequence.DefaultIndexDelegate
Class defining the default behaviour of sequences with respect to slice assignment, etc.,
which is the one correct for
list . |
PyObject.ConversionException
Modifier and Type | Field and Description |
---|---|
protected SequenceIndexDelegate |
delegator
A delegate that handles index checking and manipulation for get, set and del operations on
this sequence in the form of a "pluggable behaviour".
|
attributes, gcMonitorGlobal, objtype, TYPE
Modifier | Constructor and Description |
---|---|
protected |
PySequence(PyType type)
Construct a PySequence for the given sub-type with the default index behaviour.
|
protected |
PySequence(PyType type,
SequenceIndexDelegate behaviour)
Construct a PySequence for the given sub-type with custom index behaviour.
|
Modifier and Type | Method and Description |
---|---|
void |
__delitem__(PyObject index)
Equivalent to the standard Python __delitem__ method.
|
void |
__delslice__(PyObject start,
PyObject stop,
PyObject step) |
PyObject |
__eq__(PyObject o)
Equivalent to the standard Python __eq__ method.
|
PyObject |
__finditem__(int index)
A variant of the __finditem__ method which accepts a primitive
int as the key. |
PyObject |
__finditem__(PyObject index)
Very similar to the standard Python __getitem__ method.
|
PyObject |
__ge__(PyObject o)
Equivalent to the standard Python __ge__ method.
|
PyObject |
__getitem__(PyObject index)
Equivalent to the standard Python __getitem__ method.
|
PyObject |
__getslice__(PyObject start,
PyObject stop,
PyObject step) |
PyObject |
__gt__(PyObject o)
Equivalent to the standard Python __gt__ method.
|
PyObject |
__iter__()
Return an iterator that is used to iterate the element of this sequence.
|
PyObject |
__le__(PyObject o)
Equivalent to the standard Python __le__ method.
|
PyObject |
__lt__(PyObject o)
Equivalent to the standard Python __lt__ method.
|
PyObject |
__ne__(PyObject o)
Equivalent to the standard Python __ne__ method.
|
boolean |
__nonzero__()
Equivalent to the standard Python __nonzero__ method.
|
void |
__setitem__(int index,
PyObject value)
A variant of the __setitem__ method which accepts a primitive
int as the key. |
void |
__setitem__(PyObject index,
PyObject value)
Equivalent to the standard Python __setitem__ method.
|
void |
__setslice__(PyObject start,
PyObject stop,
PyObject step,
PyObject value) |
java.lang.Object |
__tojava__(java.lang.Class<?> c)
Equivalent to the Jython __tojava__ method.
|
protected int |
boundToSequence(int index)
Adjusts
index such that it's ≥0 and ≤ __len__. |
protected static int |
cmp(PyObject o1,
int ol1,
PyObject o2,
int ol2)
Compare the specified object/length pairs.
|
protected void |
del(int index)
Deletes an element from the sequence (and closes up the gap).
|
protected void |
delRange(int start,
int stop)
Deletes a contiguous sub-sequence (and closes up the gap).
|
protected void |
delslice(int start,
int stop,
int step,
int n)
Deletes a simple or extended slice and closes up the gap(s).
|
protected static PySequence |
fastSequence(PyObject seq,
java.lang.String msg)
Return a copy of a sequence where the __len__() method is telling the truth.
|
protected abstract PyObject |
getslice(int start,
int stop,
int step)
Returns a range of elements from the sequence.
|
boolean |
isMappingType() |
boolean |
isNumberType() |
boolean |
isSequenceType() |
protected boolean |
isSubType(PyObject other)
isSubType tailored for PySequence binops.
|
protected abstract PyObject |
pyget(int index)
Returns the element of the sequence at the given index.
|
protected void |
pyset(int index,
PyObject value)
Sets the indexed element of the sequence to the given value.
|
protected abstract PyObject |
repeat(int count)
Returns a (concrete subclass of) PySequence that repeats the given sequence, as in the
implementation of
__mul__ for strings. |
protected java.lang.String |
runsupportedopMessage(java.lang.String op,
PyObject o2)
Return sequence-specific error messages suitable for substitution.
|
protected void |
setslice(int start,
int stop,
int step,
PyObject value)
Sets the given range of elements according to Python slice assignment semantics.
|
protected static int |
sliceLength(int start,
int stop,
long step)
Make step a long in case adding the start, stop and step together overflows an int.
|
protected java.lang.String |
unsupportedopMessage(java.lang.String op,
PyObject o2)
Return sequence-specific error messages suitable for substitution.
|
__abs__, __add__, __and__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __cmp__, __coerce__, __coerce_ex__, __complex__, __contains__, __delattr__, __delattr__, __delete__, __delitem__, __delslice__, __dir__, __div__, __divmod__, __ensure_finalizer__, __findattr__, __findattr__, __findattr_ex__, __finditem__, __float__, __floordiv__, __format__, __get__, __getattr__, __getattr__, __getitem__, __getnewargs__, __getslice__, __hash__, __hex__, __iadd__, __iand__, __idiv__, __idivmod__, __ifloordiv__, __ilshift__, __imod__, __imul__, __index__, __int__, __invert__, __ior__, __ipow__, __irshift__, __isub__, __iternext__, __itruediv__, __ixor__, __len__, __long__, __lshift__, __mod__, __mul__, __neg__, __not__, __oct__, __or__, __pos__, __pow__, __pow__, __radd__, __rand__, __rawdir__, __rdiv__, __rdivmod__, __reduce__, __reduce_ex__, __reduce_ex__, __repr__, __rfloordiv__, __rlshift__, __rmod__, __rmul__, __ror__, __rpow__, __rrshift__, __rshift__, __rsub__, __rtruediv__, __rxor__, __set__, __setattr__, __setattr__, __setitem__, __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, _unsupportedop, _xor, adaptToCoerceTuple, asDouble, asIndex, asIndex, asInt, asInt, asIterable, asLong, asLong, asName, asName, asString, asString, asStringOrNull, asStringOrNull, bit_length, conjugate, delDict, delType, dispatch__init__, equals, fastGetClass, fastGetDict, finalize, getDict, getJavaProxy, getType, hashCode, impAttr, implementsDescrDelete, implementsDescrGet, implementsDescrSet, invoke, invoke, invoke, invoke, invoke, invoke, isCallable, isDataDescr, isIndex, isInteger, mergeClassDict, mergeDictAttr, mergeListAttr, noAttributeError, object___subclasshook__, readonlyAttributeError, setDict, setType, toString
protected SequenceIndexDelegate delegator
SequenceIndexDelegate
.protected PySequence(PyType type)
type
- actual (Python) type of sub-classprotected PySequence(PyType type, SequenceIndexDelegate behaviour)
type
- actual (Python) type of sub-classbehaviour
- specific index behaviour (or null)protected abstract PyObject pyget(int index)
__getitem__(org.python.core.PyObject)
It is guaranteed by PySequence that
when it calls pyget(int)
the index is within the bounds of the array. Any other
clients must make the same guarantee.index
- index of element to return.protected abstract PyObject getslice(int start, int stop, int step)
start
- the position of the first element.stop
- one more than the position of the last element.step
- the step size.protected abstract PyObject repeat(int count)
__mul__
for strings.count
- the number of times to repeat the sequence.protected void pyset(int index, PyObject value)
__setitem__(int, org.python.core.PyObject)
It is guaranteed by
PySequence that when it calls pyset(int) the index is within the bounds of the array. Any
other clients must make the same guarantee.index
- index of the element to set.value
- the value to set this element to.protected void setslice(int start, int stop, int step, PyObject value)
start==stop
, it is equivalent to insertion at that point. If the step size is
not one, and start!=stop
, the slice defines a certain number of elements to be
replaced, and the value must be a sequence of exactly that many elements (or convertible to
such a sequence).start
- the position of the first element.stop
- one more than the position of the last element.step
- the step size.value
- an object consistent with the slice assignmentprotected void del(int index)
index
- index of the element to delete.protected void delRange(int start, int stop)
start
- the position of the first element.stop
- one more than the position of the last element.protected void delslice(int start, int stop, int step, int n)
[start:stop:step]
mean what they would in Python, after application of
the "end-relative" rules for negative numbers and None
. The count n
is as supplied by PySlice.indicesEx(int)
. This method is unsafe in that slice
parameters are assumed correct.start
- the position of the first element.stop
- beyond the position of the last element (not necessarily just beyond).step
- from one element to the next (positive or negative)n
- number of elements to deletepublic boolean __nonzero__()
PyObject
PyObject
is considered true.__nonzero__
in class PyObject
public PyObject __iter__()
PyObject
If a PyObject subclass should support iteration based in the __finditem__() method, it must supply an implementation of __iter__() like this:
public PyObject __iter__() { return new PySequenceIter(this); }When iterating over a python sequence from java code, it should be done with code like this:
for (PyObject item : seq.asIterable()) { // Do something with item }
public PyObject __eq__(PyObject o)
PyObject
public PyObject __ne__(PyObject o)
PyObject
public PyObject __lt__(PyObject o)
PyObject
public PyObject __le__(PyObject o)
PyObject
public PyObject __gt__(PyObject o)
PyObject
public PyObject __ge__(PyObject o)
PyObject
protected boolean isSubType(PyObject other)
other
- PyObjectprotected static int cmp(PyObject o1, int ol1, PyObject o2, int ol2)
protected static PySequence fastSequence(PyObject seq, java.lang.String msg)
protected static final int sliceLength(int start, int stop, long step)
protected int boundToSequence(int index)
index
such that it's ≥0 and ≤ __len__. If index
starts off negative, it's treated as an index from the end of the sequence going back to the
start.public PyObject __finditem__(int index)
PyObject
int
as the key.
By default, this method will call __finditem__(PyObject key)
with the
appropriate args. The only reason to override this method is for performance.__finditem__
in class PyObject
index
- the key to lookup in this sequence.PyObject.__finditem__(PyObject)
public PyObject __finditem__(PyObject index)
PyObject
__finditem__
in class PyObject
index
- the key to lookup in this containerpublic PyObject __getitem__(PyObject index)
PyObject
__finditem__
method instead.__getitem__
in class PyObject
index
- the key to lookup in this container.PyObject.__finditem__(PyObject)
public boolean isMappingType() throws PyIgnoreMethodTag
isMappingType
in class PyObject
PyIgnoreMethodTag
public boolean isNumberType() throws PyIgnoreMethodTag
isNumberType
in class PyObject
PyIgnoreMethodTag
public PyObject __getslice__(PyObject start, PyObject stop, PyObject step)
__getslice__
in class PyObject
public void __setslice__(PyObject start, PyObject stop, PyObject step, PyObject value)
__setslice__
in class PyObject
public void __delslice__(PyObject start, PyObject stop, PyObject step)
__delslice__
in class PyObject
public void __setitem__(int index, PyObject value)
PyObject
int
as the key. By
default, this will call __setitem__(PyObject key, PyObject value)
with the
appropriate args. The only reason to override this method is for performance.__setitem__
in class PyObject
index
- the key whose value will be setvalue
- the value to set this key toPyObject.__setitem__(PyObject, PyObject)
public void __setitem__(PyObject index, PyObject value)
PyObject
__setitem__
in class PyObject
index
- the key whose value will be setvalue
- the value to set this key topublic void __delitem__(PyObject index)
PyObject
__delitem__
in class PyObject
index
- the key to be removed from the containerpublic java.lang.Object __tojava__(java.lang.Class<?> c) throws PyIgnoreMethodTag
PyObject
Py.NoConversion
if this
PyObject
can not be converted to the desired Java class.__tojava__
in class PyObject
c
- the Class to convert this PyObject
to.PyIgnoreMethodTag
protected java.lang.String unsupportedopMessage(java.lang.String op, PyObject o2)
unsupportedopMessage
in class PyObject
protected java.lang.String runsupportedopMessage(java.lang.String op, PyObject o2)
runsupportedopMessage
in class PyObject
public boolean isSequenceType()
isSequenceType
in class PyObject