[][src]Struct cpython::PyObject

#[repr(C)]
pub struct PyObject { /* fields omitted */ }

Represents a reference to a Python object.

Python objects are reference counted. Calling clone_ref() on a PyObject will return a new reference to the same object (thus incrementing the reference count). The Drop implementation will automatically decrement the reference count. You can also call release_ref() to explicitly decrement the reference count. This is slightly faster than relying on automatic drop, because release_ref does not need to check whether the GIL needs to be acquired.

PyObject can be used with all Python objects, since all python types derive from object. This crate also contains other, more specific types that serve as references to Python objects (e.g. PyTuple for Python tuples, etc.).

You can convert from any Python object to PyObject by calling as_object() or into_object() from the PythonObject trait. In the other direction, you can call cast_as() or cast_into() on PyObject to convert to more specific object types.

Most of the interesting methods are provided by the ObjectProtocol trait.

Methods

impl PyObject[src]

pub unsafe fn from_owned_ptr(_py: Python, ptr: *mut PyObject) -> PyObject[src]

Creates a PyObject instance for the given FFI pointer. This moves ownership over the pointer into the PyObject. Undefined behavior if the pointer is NULL or invalid.

pub unsafe fn from_borrowed_ptr(_py: Python, ptr: *mut PyObject) -> PyObject[src]

Creates a PyObject instance for the given FFI pointer. Calls Py_INCREF() on the ptr. Undefined behavior if the pointer is NULL or invalid.

pub unsafe fn from_owned_ptr_opt(
    py: Python,
    ptr: *mut PyObject
) -> Option<PyObject>
[src]

Creates a PyObject instance for the given FFI pointer. This moves ownership over the pointer into the PyObject. Returns None for null pointers; undefined behavior if the pointer is invalid.

pub unsafe fn from_borrowed_ptr_opt(
    py: Python,
    ptr: *mut PyObject
) -> Option<PyObject>
[src]

Returns None for null pointers; undefined behavior if the pointer is invalid.

pub fn as_ptr(&self) -> *mut PyObject[src]

Gets the underlying FFI pointer. Returns a borrowed pointer.

#[must_use] pub fn steal_ptr(self) -> *mut PyObject[src]

Gets the underlying FFI pointer. Consumes self without calling Py_DECREF(), thus returning an owned pointer.

pub unsafe fn borrow_from_ptr<'a>(ptr: &'a *mut PyObject) -> &'a PyObject[src]

Transmutes an FFI pointer to &PyObject. Undefined behavior if the pointer is NULL or invalid.

pub unsafe fn borrow_from_owned_ptr_slice<'a>(
    ptr: &'a [*mut PyObject]
) -> &'a [PyObject]
[src]

Transmutes a slice of owned FFI pointers to &[PyObject]. Undefined behavior if any pointer in the slice is NULL or invalid.

pub fn get_refcnt(&self, _py: Python) -> usize[src]

Gets the reference count of this Python object.

pub fn get_type(&self, py: Python) -> PyType[src]

Gets the Python type object for this object's type.

pub unsafe fn unchecked_cast_into<T>(self) -> T where
    T: PythonObject
[src]

Casts the PyObject to a concrete Python object type. Causes undefined behavior if the object is not of the expected type. This is a wrapper function around PythonObject::unchecked_downcast_from().

pub fn cast_into<'p, T>(
    self,
    py: Python<'p>
) -> Result<T, PythonObjectDowncastError<'p>> where
    T: PythonObjectWithCheckedDowncast
[src]

Casts the PyObject to a concrete Python object type. Fails with PythonObjectDowncastError if the object is not of the expected type. This is a wrapper function around PythonObjectWithCheckedDowncast::downcast_from().

pub unsafe fn unchecked_cast_as<'s, T>(&'s self) -> &'s T where
    T: PythonObject
[src]

Casts the PyObject to a concrete Python object type. Causes undefined behavior if the object is not of the expected type. This is a wrapper function around PythonObject::unchecked_downcast_borrow_from().

pub fn cast_as<'s, 'p, T>(
    &'s self,
    py: Python<'p>
) -> Result<&'s T, PythonObjectDowncastError<'p>> where
    T: PythonObjectWithCheckedDowncast
[src]

Casts the PyObject to a concrete Python object type. Fails with PythonObjectDowncastError if the object is not of the expected type. This is a wrapper function around PythonObjectWithCheckedDowncast::downcast_borrow_from().

pub fn extract<'a, T>(&'a self, py: Python) -> PyResult<T> where
    T: FromPyObject<'a>, 
[src]

Extracts some type from the Python object. This is a wrapper function around FromPyObject::from_py_object().

Trait Implementations

impl PythonObject for PyObject[src]

impl PythonObjectWithCheckedDowncast for PyObject[src]

impl PythonObjectWithTypeObject for PyObject[src]

impl ToPyObject for PyObject[src]

Identity conversion: allows using existing PyObject instances where T: ToPyObject is expected.

type ObjectType = PyObject

impl<'source> FromPyObject<'source> for PyObject[src]

impl<'source> FromPyObject<'source> for &'source PyObject[src]

impl ObjectProtocol for PyObject[src]

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)'. Read more

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'. Read more

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'. Read more

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'. Read more

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

Compares two Python objects. Read more

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

Compares two Python objects. Read more

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

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

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

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

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)' Read more

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)' Read more

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)' Read more

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' Read more

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)' Read more

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'. Read more

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]'. Read more

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. Read more

impl BaseObject for PyObject[src]

type InitType = ()

impl Sync for PyObject[src]

impl Drop for PyObject[src]

Dropping a PyObject decrements the reference count on the object by 1.

impl PartialEq<PyObject> for PyObject[src]

PyObject implements the == operator using reference equality: obj1 == obj2 in rust is equivalent to obj1 is obj2 in Python.

#[must_use] fn ne(&self, other: &Rhs) -> bool1.0.0[src]

This method tests for !=.

impl Send for PyObject[src]

impl Eq for PyObject[src]

PyObject implements the == operator using reference equality: obj1 == obj2 in rust is equivalent to obj1 is obj2 in Python.

impl Debug for PyObject[src]

impl Display for PyObject[src]

Auto Trait Implementations

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]