BoB robotics
The Brains on Board robotics library
pybind11::object Class Reference

#include <pytypes.h>

Inheritance diagram for pybind11::object:
pybind11::handle pybind11::detail::object_api< handle > pybind11::detail::pyobject_tag pybind11::bool_ pybind11::buffer pybind11::bytearray pybind11::bytes pybind11::capsule pybind11::detail::generic_type pybind11::dict pybind11::dtype pybind11::ellipsis pybind11::exception< type > pybind11::float_ pybind11::function pybind11::int_ pybind11::iterable pybind11::iterator pybind11::list pybind11::memoryview pybind11::module_ pybind11::none pybind11::sequence pybind11::set pybind11.setup_helpers.ParallelCompile pybind11::slice pybind11::staticmethod pybind11::str pybind11::tuple pybind11::type pybind11::weakref

Classes

struct  borrowed_t
 
struct  stolen_t
 

Public Member Functions

 __attribute__ ((deprecated("Use reinterpret_borrow<object>() or reinterpret_steal<object>()"))) object(handle h
 
 object (const object &o)
 Copy constructor; always increases the reference count.
 
 object (object &&other) noexcept
 Move constructor; steals the object from other and preserves its reference count.
 
 ~object ()
 Destructor; automatically calls handle::dec_ref()
 
handle release ()
 
objectoperator= (const object &other)
 
objectoperator= (object &&other) noexcept
 
template<typename T >
cast () const &
 
template<typename T >
cast () &&
 
 object (handle h, borrowed_t)
 
 object (handle h, stolen_t)
 
template<typename T >
cast () const &
 
template<typename T >
cast () &&
 
template<>
void cast () const &
 
template<>
void cast () &&
 
- Public Member Functions inherited from pybind11::handle
 handle ()=default
 The default constructor creates a handle with a nullptr-valued pointer.
 
 handle (PyObject *ptr)
 Creates a handle from the given raw Python object pointer.
 
PyObject * ptr () const
 Return the underlying PyObject * pointer.
 
PyObject *& ptr ()
 
const handleinc_ref () const &
 
const handledec_ref () const &
 
template<typename T >
cast () const
 
 operator bool () const
 Return true when the handle wraps a valid Python object.
 
 __attribute__ ((deprecated("Use obj1.is(obj2) instead"))) bool operator
 
template<>
void cast () const
 
- Public Member Functions inherited from pybind11::detail::object_api< handle >
iterator begin () const
 
iterator end () const
 Return a sentinel which ends iteration.
 
item_accessor operator[] (handle key) const
 
item_accessor operator[] (const char *key) const
 See above (the only difference is that they key is provided as a string literal)
 
obj_attr_accessor attr (handle key) const
 
str_attr_accessor attr (const char *key) const
 See above (the only difference is that they key is provided as a string literal)
 
args_proxy operator* () const
 
object operator* (object_api const &other) const
 
bool contains (T &&item) const
 Check if the given item is contained within this object, i.e. item in obj.
 
object operator() (Args &&...args) const
 
 __attribute__ ((deprecated("call(...) was deprecated in favor of operator()(...)"))) object call(Args &&... args) const
 
bool is (object_api const &other) const
 Equivalent to obj is other in Python.
 
bool is_none () const
 Equivalent to obj is None in Python.
 
bool equal (object_api const &other) const
 Equivalent to obj == other in Python.
 
bool not_equal (object_api const &other) const
 
bool operator< (object_api const &other) const
 
bool operator<= (object_api const &other) const
 
bool operator> (object_api const &other) const
 
bool operator>= (object_api const &other) const
 
object operator- () const
 
object operator- (object_api const &other) const
 
object operator~ () const
 
object operator+ (object_api const &other) const
 
object operator+= (object_api const &other) const
 
object operator-= (object_api const &other) const
 
object operator*= (object_api const &other) const
 
object operator/ (object_api const &other) const
 
object operator/= (object_api const &other) const
 
object operator| (object_api const &other) const
 
object operator|= (object_api const &other) const
 
object operator& (object_api const &other) const
 
object operator&= (object_api const &other) const
 
object operator^ (object_api const &other) const
 
object operator^= (object_api const &other) const
 
object operator<< (object_api const &other) const
 
object operator<<= (object_api const &other) const
 
object operator>> (object_api const &other) const
 
object operator>>= (object_api const &other) const
 
__attribute__((deprecated("Use py::str(obj) instead"))) pybind11 str_attr_accessor doc () const
 Get or set the object's docstring, i.e. obj.__doc__.
 
int ref_count () const
 Return the object's current reference count.
 
handle get_type () const
 

Public Attributes

bool is_borrowed: handle(h) { if (is_borrowed) inc_ref()
 

Friends

template<typename T >
reinterpret_borrow (handle)
 
template<typename T >
reinterpret_steal (handle)
 

Detailed Description

\rst Holds a reference to a Python object (with reference counting)

Like handle, the object class is a thin wrapper around an arbitrary Python object (i.e. a PyObject * in Python's C API). In contrast to handle, it optionally increases the object's reference count upon construction, and it always* decreases the reference count when the object instance goes out of scope and is destructed. When using object instances consistently, it is much easier to get reference counting right at the first attempt. \endrst

Member Function Documentation

◆ release()

handle pybind11::object::release ( )
inline

\rst Resets the internal pointer to nullptr without decreasing the object's reference count. The function returns a raw handle to the original Python object. \endrst

Friends And Related Function Documentation

◆ reinterpret_borrow

template<typename T >
T reinterpret_borrow ( handle  h)
friend

\rst Declare that a handle or PyObject * is a certain type and borrow the reference. The target type T must be object or one of its derived classes. The function doesn't do any conversions or checks. It's up to the user to make sure that the target type is correct.

.. code-block:: cpp

PyObject *p = PyList_GetItem(obj, index);
py::object o = reinterpret_borrow<py::object>(p);

or py::tuple t = reinterpret_borrow<py::tuple>(p); // <– p must be already be a tuple \endrst

◆ reinterpret_steal

template<typename T >
T reinterpret_steal ( handle  h)
friend

\rst Like reinterpret_borrow, but steals the reference.

.. code-block:: cpp

PyObject *p = PyObject_Str(obj); py::str s = reinterpret_steal<py::str>(p); // <– p must be already be a str \endrst


The documentation for this class was generated from the following files: