Trait cpython::ObjectProtocol[][src]

pub trait ObjectProtocol: PythonObject {
    fn hasattr<N>(&self, py: Python<'_>, attr_name: N) -> PyResult<bool>
    where
        N: ToPyObject
, { ... }
fn getattr<N>(&self, py: Python<'_>, attr_name: N) -> PyResult<PyObject>
    where
        N: ToPyObject
, { ... }
fn setattr<N, V>(
        &self,
        py: Python<'_>,
        attr_name: N,
        value: V
    ) -> PyResult<()>
    where
        N: ToPyObject,
        V: ToPyObject
, { ... }
fn delattr<N>(&self, py: Python<'_>, attr_name: N) -> PyResult<()>
    where
        N: ToPyObject
, { ... }
fn compare<O>(&self, py: Python<'_>, other: O) -> PyResult<Ordering>
    where
        O: ToPyObject
, { ... }
fn rich_compare<O>(
        &self,
        py: Python<'_>,
        other: O,
        compare_op: CompareOp
    ) -> PyResult<PyObject>
    where
        O: ToPyObject
, { ... }
fn repr(&self, py: Python<'_>) -> PyResult<PyString> { ... }
fn str(&self, py: Python<'_>) -> PyResult<PyString> { ... }
fn unistr(&self, py: Python<'_>) -> PyResult<PyUnicode> { ... }
fn is_callable(&self, _py: Python<'_>) -> bool { ... }
fn call<A>(
        &self,
        py: Python<'_>,
        args: A,
        kwargs: Option<&PyDict>
    ) -> PyResult<PyObject>
    where
        A: ToPyObject<ObjectType = PyTuple>
, { ... }
fn call_method<A>(
        &self,
        py: Python<'_>,
        name: &str,
        args: A,
        kwargs: Option<&PyDict>
    ) -> PyResult<PyObject>
    where
        A: ToPyObject<ObjectType = PyTuple>
, { ... }
fn hash(&self, py: Python<'_>) -> PyResult<Py_hash_t> { ... }
fn is_true(&self, py: Python<'_>) -> PyResult<bool> { ... }
fn len(&self, py: Python<'_>) -> PyResult<usize> { ... }
fn get_item<K>(&self, py: Python<'_>, key: K) -> PyResult<PyObject>
    where
        K: ToPyObject
, { ... }
fn set_item<K, V>(&self, py: Python<'_>, key: K, value: V) -> PyResult<()>
    where
        K: ToPyObject,
        V: ToPyObject
, { ... }
fn del_item<K>(&self, py: Python<'_>, key: K) -> PyResult<()>
    where
        K: ToPyObject
, { ... }
fn iter<'p>(&self, py: Python<'p>) -> PyResult<PyIterator<'p>> { ... } }

Trait that contains methods

Provided methods

fn hasattr<N>(&self, py: Python<'_>, attr_name: N) -> PyResult<bool> where
    N: ToPyObject
[src]

Determines whether this object has the given attribute. This is equivalent to the Python expression 'hasattr(self, attr_name)'.

fn getattr<N>(&self, py: Python<'_>, attr_name: N) -> PyResult<PyObject> where
    N: ToPyObject
[src]

Retrieves an attribute value. This is equivalent to the Python expression 'self.attr_name'.

fn setattr<N, V>(&self, py: Python<'_>, attr_name: N, value: V) -> PyResult<()> where
    N: ToPyObject,
    V: ToPyObject
[src]

Sets an attribute value. This is equivalent to the Python expression 'self.attr_name = value'.

fn delattr<N>(&self, py: Python<'_>, attr_name: N) -> PyResult<()> where
    N: ToPyObject
[src]

Deletes an attribute. This is equivalent to the Python expression 'del self.attr_name'.

fn compare<O>(&self, py: Python<'_>, other: O) -> PyResult<Ordering> where
    O: ToPyObject
[src]

Compares two Python objects.

On Python 2, this is equivalent to the Python expression 'cmp(self, other)'.

On Python 3, this is equivalent to:

if self == other:
    return Equal
elif a < b:
    return Less
elif a > b:
    return Greater
else:
    raise TypeError("ObjectProtocol::compare(): All comparisons returned false")

fn rich_compare<O>(
    &self,
    py: Python<'_>,
    other: O,
    compare_op: CompareOp
) -> PyResult<PyObject> where
    O: ToPyObject
[src]

Compares two Python objects.

Depending on the value of compare_op, equivalent to one of the following Python expressions:

  • CompareOp::Eq: self == other
  • CompareOp::Ne: self != other
  • CompareOp::Lt: self < other
  • CompareOp::Le: self <= other
  • CompareOp::Gt: self > other
  • CompareOp::Ge: self >= other

fn repr(&self, py: Python<'_>) -> PyResult<PyString>[src]

Compute the string representation of self. This is equivalent to the Python expression 'repr(self)'.

fn str(&self, py: Python<'_>) -> PyResult<PyString>[src]

Compute the string representation of self. This is equivalent to the Python expression 'str(self)'.

fn unistr(&self, py: Python<'_>) -> PyResult<PyUnicode>[src]

Compute the unicode string representation of self. This is equivalent to the Python expression 'unistr(self)'.

fn is_callable(&self, _py: Python<'_>) -> bool[src]

Determines whether this object is callable.

fn call<A>(
    &self,
    py: Python<'_>,
    args: A,
    kwargs: Option<&PyDict>
) -> PyResult<PyObject> where
    A: ToPyObject<ObjectType = PyTuple>, 
[src]

Calls the object. This is equivalent to the Python expression: 'self(*args, **kwargs)'

args should be a value that, when converted to Python, results in a tuple. For this purpose, you can use:

  • cpython::NoArgs when calling a method without any arguments
  • otherwise, a Rust tuple with 1 or more elements

fn call_method<A>(
    &self,
    py: Python<'_>,
    name: &str,
    args: A,
    kwargs: Option<&PyDict>
) -> PyResult<PyObject> where
    A: ToPyObject<ObjectType = PyTuple>, 
[src]

Calls a method on the object. This is equivalent to the Python expression: 'self.name(*args, **kwargs)'

args should be a value that, when converted to Python, results in a tuple. For this purpose, you can use:

  • cpython::NoArgs when calling a method without any arguments
  • otherwise, a Rust tuple with 1 or more elements

Example

use cpython::{NoArgs, ObjectProtocol};
// Call method without arguments:
let value = obj.call_method(py, "method0", NoArgs, None).unwrap();
// Call method with a single argument:
obj.call_method(py, "method1", (true,), None).unwrap();

fn hash(&self, py: Python<'_>) -> PyResult<Py_hash_t>[src]

Retrieves the hash code of the object. This is equivalent to the Python expression: 'hash(self)'

fn is_true(&self, py: Python<'_>) -> PyResult<bool>[src]

Returns whether the object is considered to be true. This is equivalent to the Python expression: 'not not self'

fn len(&self, py: Python<'_>) -> PyResult<usize>[src]

Returns the length of the sequence or mapping. This is equivalent to the Python expression: 'len(self)'

fn get_item<K>(&self, py: Python<'_>, key: K) -> PyResult<PyObject> where
    K: ToPyObject
[src]

This is equivalent to the Python expression: 'self[key]'

fn set_item<K, V>(&self, py: Python<'_>, key: K, value: V) -> PyResult<()> where
    K: ToPyObject,
    V: ToPyObject
[src]

Sets an item value. This is equivalent to the Python expression 'self[key] = value'.

fn del_item<K>(&self, py: Python<'_>, key: K) -> PyResult<()> where
    K: ToPyObject
[src]

Deletes an item. This is equivalent to the Python expression 'del self[key]'.

fn iter<'p>(&self, py: Python<'p>) -> PyResult<PyIterator<'p>>[src]

Takes an object and returns an iterator for it. This is typically a new iterator but if the argument is an iterator, this returns itself.

Loading content...

Implementors

impl ObjectProtocol for PyObject[src]

Loading content...